2016-07-01 17 views
0

私は2つのコレクションOrderとTabItemを持っています。 私はorder idの配列を取得しています。これらのIDとcheckレコードがTabItemにループする必要があります。レコードが存在する場合は、TabItemを更新し、新しいTabItemを作成します。私のコードは以下の通りです:ノードjsで新しいコレクションを更新または作成

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

以下のコードを試してください。

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

希望はこちらをご覧ください。

+0

ありがとうございました。レコードが存在しない場合はどうなりますか? – Sunny

+0

'{upsert:true}'を参照してください。指定されたフィールドにレコードが存在しない場合、レコード自体が挿入されます。 –

関連する問題