【发布时间】:2015-12-27 01:49:42
【问题描述】:
我有一个 meanjs 项目,我从服务器上的用户那里得到一些输入,请求正文具有以下结构:
{
transaction: {
heading: '',
items: [Object]
},
something: {},
somethingAgain: {}
}
items数组的结构如下——
[ { ref: '5607c6536e67edb44a6a8186',
name: '',
quantity: 0,
discount: 0,
cost: 180 } ]
其中ref 是我的项目模型中项目的_id 值。
所以,基本上我想要做的是遍历项目数组并填充每个 ref 的属性,并为每个项目相应地计算 cost 属性。
我不能使用简单的 for 循环,因为它甚至会在第一次异步调用 mongodb 以查找项目完成之前自行执行。
那么,如何解决这个问题?请建议。
所以,在问题中添加更多信息 - 我接收请求的服务器端控制器代码如下 -
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 集合匹配的项目。
【问题讨论】:
-
你看过猫鼬的人口特征吗? mongoosejs.com/docs/populate.html
-
您能否提供更多信息,也许是代码示例,说明您在服务器上究竟在做什么?
-
好的,请稍等。我将编辑帖子。 @JohnnyHK 我想填充,但我只需要整个 Items 集合中的一组受限记录。所以,如果我要填充,我会找到所有记录,然后填充它们,或者有什么方法可以在 mongoose find 方法中传递一个查询,以仅选择那些“_id”值我存储在items数组中的'ref'属性
-
我已经编辑了帖子。 @abiwer
-
也许我遗漏了一些东西,但为什么你不能在 mongo 调用之前迭代这些项目?
标签: javascript node.js mongodb asynchronous mongoose