如何解决forEach 循环以错误的顺序返回一些项目
我正在通过项目列表在我的 nodejs 路由中执行 foreach,然后在 foreach 完成后呈现 ejs 页面。但令我惊讶的是,我收到的一些商品的顺序是随机错误的。
router.get("/history",isLoggedIn,function(req,res) {
var docs=[];
Tube.find({}).sort({date: 'desc'}).limit(100).exec((err,tubes) => {
var itemsProcessed = 0;
var status;
tubes.forEach(async (tube,index,array) => {
await Box.findOne({ $or: [{"Tubes": tube._id},{"nok_Tubes": tube._id}]},async function (err,Box) {
if(err || !Box) {console.log(err); res.json({message:"Failed"});}
else{
if(tube.status)
status=await "ok";
else if(tube.status===false) status=await "nok";
await docs.push({qr: tube.qr_code,status,code_bar: Box.code_bar,insert_date: moment(tube.date).format("YYYY-M-D H:mm:ss a"),count_in_Box: tube.count_in_Box });
}
}).then(function () {
itemsProcessed++;
if(itemsProcessed === array.length) {
console.log(docs[0]);
res.render("detection/history",{docs});
}
});
});
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。