2017-04-07 36 views
0

ERRMSG:「字段\」重\」必須是一個數組,但int類型的 文件

我的架構:

weight: [{ 
    type: Number 
}] 

和我的POST請求:

app.post('/edit', function(req, res){ 
    var update = { $push: {"weight": req.body.weight}}; 
    User.findOneAndUpdate(conditions, update, options, function (err) 
    { 
     if (err) 
     { 
      console.log(err); 
     } 
     else 
     { 
      console.log('yep'); 
     } 
    }) 
}); 
+0

看起來你的字段類似於db中的'{「weight」:3}',而你使用'$ push'將數組值推入'int'類型字段。 – Veeram

+0

所以,我應該改變模式,使之像:重量:[{0類型:陣列 }],?它不起作用 –

+0

不,模式定義是正確的。我的意思是建議你必須首先在「weight」字段中修正數據。它在數據庫中應該看起來像'{「weight」:[3]}',您可以使用'$ push'的更新將更多值添加到數組中。因此,您可能需要像更新腳本來首先更改數據。看看這個答案是否有幫助。 http://stackoverflow.com/questions/7401394/mongodb-type-change-to-array – Veeram

回答

0

如果在集合中的多個文檔匹配您的conditions,只需將{ weight: { $type: 4 } }添加到您的conditions即可更新。

否則,您的應用程序的模式與數據庫中的數據不匹配。

+0

我使用user_id作爲條件,所以我只有一個記錄 –

+0

然後它落入答案的「否則」部分。 –

-1

他,這可能會奏效。

//架構

weight: [Number] 

http://mongoosejs.com/docs/schematypes.html

//或者這樣太多,如果推對象到數組

//架構

weight: [{ 
    weight: { 
    type: Number 
    } 
}] 

//然後在API

var update = { $push: {"weight": { "weight": req.body.weight }}};