我有一个meanjs项目,我从服务器上的用户那里获取一些输入,请求正文具有以下结构:
{
transaction: {
heading: '',
items: [Object]
},
something: {},
somethingAgain: {}
}
items数组的结构如下 -
[ { ref: '5607c6536e67edb44a6a8186',
name: '',
quantity: 0,
discount: 0,
cost: 180 } ]
其中 ref
是我的 Item 模型中该项目的 _id
值。
因此,基本上我想做的是循环遍历项目数组并填充每个引用的属性,并相应地计算每个项目的成本属性。
我无法使用简单的 for 循环,因为它会在第一次异步调用 mongodb 来查找项目完成之前自行执行。
那么,如何处理这个问题呢?请建议。
因此,向问题添加更多信息 - 我接收请求的服务器端 Controller 代码如下 -
exports.create = function (req, res) {
console.log(req.body.transaction.items);
Sale.create(req.body, function (err, sale) {
if (err) {
return handleError(res, err);
}
return res.json(201, sale);
});
};
项目的日志输出如我上面所示。所以我在这里要做的是迭代 items 数组并找到 ref
与 Items 集合匹配的项目。
最佳答案
如果我理解正确,我建议使用 Kris Kowal's q为了这。它是一个小型的 Promise 库,您可以与 Node 一起使用。 Angular 的 $q 就是基于它的。这是一个例子:
function(req, res){
var calls = [];
calls.push(Collection1.save());
calls.push(Collection2.save());
calls.push(Collection3.save());
q.all(calls).then(function(call1res, call2res, call3res){
res.json({whaterver:''});
});
}
关于javascript - mongoose:如何循环包含对象引用(_id)的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32846387/