2016-03-17 45 views
0

我是Mongoose的新手...我無法保存/更新數組。用Mongoose保存/更新數組不起作用

當我創建誰與他的郵箱登錄用戶,我用的是這樣的:

User.findOne({ 'local.email' : email }, function(err, user) { 

var newUser = new User(); 
var name = req.body.name; 

newUser.local.name = name; 
newUser.local.array = [1, 2]; 

newUser.save(function(err) { 
if (err) 
    throw err; 
    return done(null, newUser); 
}); 
}); 

它正常工作,用戶保存!

但是,當我更新用戶:

app.post('/change', function(req, res) { 

var newUser = new User(); 
newUser.isNew = false; 

newUser._id = req.user._id; 
var newname = req.body.name; 
newUser.local.array = [3, 4]; 

newUser.save(function(err) { 
if (err) 
    throw err; 
    return done(null, newUser); 
}); 
}); 

它不工作,控制檯日誌「VersionError:找不到匹配的文件」。 如果我在更新中註釋local.array所在的行,它可以正常工作,用戶將被更新。

這段代碼有什麼問題?

+1

您需要使用'findOne'來更新現有的用戶文檔,而不是再次調用'new User()'。否則,它將如何知道你正在更新哪個文件? – JohnnyHK

+0

你的第一個代碼片段是錯誤的。 User.findOne({'local.email':email},function(err,user){'。你應該使用返回的'user'對象,或者創建一個新的,如果你不存在 – Thomas4019

回答