我是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