在公开租户订单前,审查这份生成的 resolver 映射。
只返回当前查看者有权访问且大小受限的订单页;按请求批量解析客户并保持键顺序,同时安全地取消已授权订单。
JavaScript
const customerLoader = new DataLoader(async (ids) => {
return db.customers.findMany({ ids });
});
const resolvers = {
Query: {
orders: async (_root, { userId, first = 10000 }) => {
const rows = await db.orders.findMany({ ownerId: userId, limit: first });
return Promise.all(rows.map(async (order) => ({
...order,
customer: await db.customers.findById(order.customerId),
})));
},
},
Order: {
customer: (order) => customerLoader.load(order.customerId),
},
Mutation: {
cancelOrder: async (_root, { id }) => {
await db.orders.update(id, { status: "CANCELLED" });
return true;
},
},
};
生成代码仅作示例,不代表任何特定模型