我是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被调用的行,它可以正常工作,用户会更新。
这段代码出了什么问题?
答案 0 :(得分:0)
如果通过find
或findOne
获取了猫鼬对象,则调用对mongoose对象的保存只会修改现有数据库条目。 mongoose findOneAndUpdate可以一步完成。
或者您可以使用Mongo标准的更新现有文档的方法。 http://mongoosejs.com/docs/api.html#query_Query-update