在节点js中更新或创建新集合

时间:2016-07-01 02:40:31

标签: node.js mongoose

我有两个集合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();
})

当我尝试调用此方法时,服务器正在挂起。任何人都可以帮助我解决这个问题。

1 个答案:

答案 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);
      }
    });       
});

希望这有助于你。