来自angular的数组中的mongoose update array ObjectId

时间:2014-11-29 01:50:03

标签: javascript angularjs node.js mongodb mongoose

我正在将ObjectId添加到另一个我收到的数组中的数组中。

exports.updateBasket = function (req, res) {
  Basket.findOne({ _id: req.params.id }, function (err, basket) {
    for(var i=0, len=req.body.length; i < len; i++) {
      basket.update({$addToSet: { "items": req.body[i] } }, { upsert: true, safe: true });
    }
    if (err) {
      res.send(err);
    }
    else {
      res.json({ message: 'Successfully added' });
    }
  });
};

我有两个问题:

  1. 在角度上进行循环是否有任何好处并且有多个PUT?
  2. 更新同一个数组但删除ObjectId的方法是什么?
  3. 我想到的一种方法是循环必须被删除的ObjectId并查看它们是否在对象的数组中,如果是,则删除它们。

    另一种方法是在调用PUT时清除数组并使用新的ObjectId列表进行更新(这将是那些减去一个用户被移除的列表)。

    两者都感觉不对......

    感谢

1 个答案:

答案 0 :(得分:0)

你的代码看起来有点奇怪。您正在req.params._id上异步获取,但是您正在排队req.body.length潜在的更新,但是在您从更新的结果中获得响应之前,您会发送“成功”。

如果要对数组进行过滤,请查看lodash,如果要异步处理多个更新并使用async模块获取这些响应。