【发布时间】:2020-08-24 13:53:35
【问题描述】:
我正在使用 Express 和 Node 在单个 router.get() 中通过多个数据库查询构建一个数组对象。
为此,我需要:(1) 查询一个集合,(2) 将结果附加到一个对象,(3) 使用 next() 将对象传递给中间件,(4) 重复很多次,( 5) 以一个附加了多个数组的漂亮对象结束。
这是我正在使用的模式(只是一个示例):
}, (req, res, next) => {
let { checkBoosters } = req;
let boosterNo = [];
let boosterMoGo = [];
if(!checkBoosters.checkBoosters.length){
return next()
}
//re-check boosters (from sentry)
for(let i=0; i<checkBoosters.checkBoosters.length; i++){
Phases.find({name: "Booster", team_oid: checkBoosters.checkBoosters[i]._id, weeks: {$gt: 0}}, (err, doc) => {
if(!doc.length){
boosterNo.push(doc[0])
}
if(doc.length){
boosterMoGo.push(doc[0])
}
if(checkBoosters.checkBoosters.length == i+1){
res.locals.boosterMoGo = { boosterMoGo }
req.boosterNo = { boosterNo }
return next()
}
})
}
}, (req, res, next) => {
这基本上是可行的,但你可能已经注意到我的问题......
- 我无法决定是应该使用“req”还是“res.locals”来存储这些数组?
- 对象正在获取“checkBoosters.checkBoosters”类型的对象模式。我可以避免这种情况吗?
感谢您提供的任何帮助。
【问题讨论】:
标签: javascript node.js mongodb express middleware