我有两个集合Order和TabItems。 我得到了一系列订单ID,我需要循环这些id并检查记录是否存在于TabItem中。如果记录存在,则更新TabItem,否则创建新的TabItem。以下是我的代码:
async.each(orders, function(order, done){
TabItem.findOne({order_id: order._id}, function(err, tab){
if(err) { console.log(err)}
if(tab != null) {
tab.quantity += order.quantity
tab.save(function(err){
if(err) { throw err }
done(true)
})
}
else {
TabItem.create({order_id: data._id, menu_item_id: each_tab.menu_item_id, quantity: each_tab.quantity}, function(err, tab_item){
if(err){
}
})
}
})
done();
})
当我尝试调用此方法时,服务器正在挂起。任何人都可以帮助我解决这个问题。
答案 0 :(得分:1)
尝试以下代码。
async.each(orders, function(order, done){
TabItem.update({order_id: order._id,menu_item_id:order.menu_item_id},{$inc:{quantity:order.quantity},{upsert:true}}).exec(function(err,result){
if(!err) {
console.log('item updated successfully');
done();
} else {
done(true);
}
});
});
希望这有助于你。