使用Mongoose保存/更新数组不起作用

时间:2016-03-17 09:19:18

标签: node.js 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 个答案:

答案 0 :(得分:0)

如果通过findfindOne获取了猫鼬对象,则调用对mongoose对象的保存只会修改现有数据库条目。 mongoose findOneAndUpdate可以一步完成。

或者您可以使用Mongo标准的更新现有文档的方法。 http://mongoosejs.com/docs/api.html#query_Query-update