node+koa ,有这样一个接口:
router.post(
'/order',
{...},
async ctx => {
const { body } = ctx.request
// 一些需要查询数据库的参数验证逻辑,比如:
const item = await Item.findOne({ where: { id: body.id } })
if (!item) {
throw Error('item not existing')
}
// 后续逻辑
const result = await createOrder(body)
ctx.body = result.id
}
)
createOrder
这个函数因为其他接口 /逻辑也会用到所以单独抽出来了,于是产生个问题:
函数内部也有用到查询Item
的地方,那这样的话,/order
这一个接口得查询Item
两次。例子是查一个,查列表的情况岂不是更浪费。
抽象出来大概是:如何避免 通用业务逻辑 与 调用它的 route 之间重复相同数据库查询操作?
求赐教!谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.