在这段生成的转账端点处理真实账户前,对它进行审查。
在已授权账户间转移精确的正数金额,原子提交,只发布一次事件,并让调用方安全重试结果未知的请求。
JavaScript
async function createTransfer(request, db) {
const body = await request.json();
const amount = Number(body.amount);
const requestId = crypto.randomUUID();
const source = await db.accounts.find(body.sourceId);
const target = await db.accounts.find(body.targetId);
if (!source) return json(404, { error: "not found" });
if (!target) return json(404, { error: "not found" });
source.balance -= amount;
target.balance += amount;
await db.accounts.save(source);
await db.accounts.save(target);
await db.events.publish("transfer.created", { requestId, amount });
return json(
201,
{ id: requestId, sourceId: source.id, targetId: target.id, amount },
);
}
生成代码仅作示例,不代表任何特定模型