我正在将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' });
}
});
};
我有两个问题:
我想到的一种方法是循环必须被删除的ObjectId并查看它们是否在对象的数组中,如果是,则删除它们。
另一种方法是在调用PUT时清除数组并使用新的ObjectId列表进行更新(这将是那些减去一个用户被移除的列表)。
两者都感觉不对......
感谢
答案 0 :(得分:0)
你的代码看起来有点奇怪。您正在req.params._id
上异步获取,但是您正在排队req.body.length
潜在的更新,但是在您从更新的结果中获得响应之前,您会发送“成功”。
如果要对数组进行过滤,请查看lodash
,如果要异步处理多个更新并使用async
模块获取这些响应。