2015-04-01 36 views
1

我試圖用Mongoose在數組中插入文檔。插入數組mongoose中的元素在NodeJS中創建Object

這裏的架構:

var user = new mongo.Schema({ 
    _id : Number, 
    devices:[ 
     { 
     device_id : String, 
     type : String 
     } 
    ]}) 

中的NodeJS更新的代碼如下所示:

app.put('/user/update',function(req,res){ 
    var obj = req.body; 
    users.update(
     {'user.username' : obj.email}, 
     { 
      'user.username' : obj.email, 
      'user.password' : obj.password, 
      'user.name.first' : obj.name, 
      'user.department' : obj.department, 
      'user.year' : obj.year, 
      'user.college' : obj.college, 
      'user.contact.phone': obj.contact, 
      'user.last_login' : obj.last_login, 
      $push:{ 
       'devices': { 
        device_id: 'sadasd32u4je3bdjas', 
        type: 'Windows' 
       } 
      } 
     }, function(err){ 
       if(err) 
        res.json({"foo": String(err)}); 
       else 
        res.json({"foo": "Successfully Signed up!"}); 
     }); 
    } 
); 

而是將其插入這樣的:

"devices": [ 
      "[object Object]", 
      "[object Object]", 
      "[object Object]", 
      "[object Object]", 
      "[object Object]" 
     ], 

哪兒我去錯了嗎?再次感謝。

回答

2

使用findOneAndUpdate()方法設置爲true的「更新插入」選項 - 這將創建對象,如果不存在(默認爲false)它:

var obj = req.body; 
var query = {'user.username': obj.email}; 
var doc = { 
    $set: { 
     'user.username': obj.email, 
     'user.password': obj.password, 
     'user.name.first': obj.name, 
     'user.department': obj.department, 
     'user.year': obj.year, 
     'user.college': obj.college, 
     'user.contact.phone': obj.contact, 
     'user.last_login': obj.last_login 
    }, 
    $push: { 
     'devices': { 
      device_id: 'sadasd32u4je3bdjas', 
      type: 'Windows' 
     } 
    } 
}; 
var options = {upsert: true}; 
users.findOneAndUpdate(query, doc, options, function(err){ 
    if(err) 
     res.json({"foo": String(err)}); 
    else 
     res.json({"foo": "Successfully Signed up!"}); 
});