Mongoose:如何循环遍历包含对象引用(_id)的数组

mongoose: how to loop through an array containing object references (_id)

本文关键字:对象引用 id 数组 包含 遍历 何循环 循环 Mongoose      更新时间:2023-09-26

我有一个meanjs项目,我从服务器上的用户获得一些输入,请求体具有以下结构:

{
   transaction: { 
       heading: '',
       items: [Object]    
   },
   something: {},
   somethingAgain: {}
}

items数组的结构如下-

[ { ref: '5607c6536e67edb44a6a8186',
    name: '',
    quantity: 0,
    discount: 0,
    cost: 180 } ]

,其中ref是item模型中项目的_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集合匹配的项目。

如果我理解正确,我建议使用Kris Kowal的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:''});
    });
}