我是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所在的行,它可以正常工作,用戶將被更新。
這段代碼有什麼問題?
您需要使用'findOne'來更新現有的用戶文檔,而不是再次調用'new User()'。否則,它將如何知道你正在更新哪個文件? – JohnnyHK
你的第一個代碼片段是錯誤的。 User.findOne({'local.email':email},function(err,user){'。你應該使用返回的'user'對象,或者創建一個新的,如果你不存在 – Thomas4019