2013-11-23 35 views
0

我保存.update是:爲什麼.save工作,貓鼬,但不與UPSERT

 tx = new Transaction transaction 

     tx.save (err) -> 
      console.log err 
      cb err 

這不僅節省了就好了。

Transaction.update transaction, {upsert: true}, (err, num, raw) -> 
     console.log err 
     console.log num 
     console.log raw 

但是,我的更新不會插入文檔。此外,它不返回err,0爲num。這與"mongoose": "~3.8.0"

回答

1

update函數的第一個參數是查詢以匹配一個或多個文檔(reference)。

我期望致Transaction.update的電話只包含文檔的_id,而不是整個對象。第二個參數是整個文檔或使用更新運算符的對象。

這是可能的,你想:

Transaction.update _id : transaction._id, transaction, upsert: true, 
    (err, num, raw)->  

或者,也許你想設置使用記錄update operators的一個交易的特定屬性。

Transaction.update _id : transaction._id, $set : { amount : 500 } , 
     upsert : true, (err, num, raw) ->