mongoose:find,修改,保存
我有一个mongooseUser
模型:
var User = mongoose.model('Users', mongoose.Schema({ username: 'string', password: 'string', rights: 'string' }) );
我想findUser
模型的一个实例,修改它的属性,并保存更改。 这是我试过的(这是错的!):
User.find({username: oldUsername}, function (err, user) { user.username = newUser.username; user.password = newUser.password; user.rights = newUser.rights; user.save(function (err) { if(err) { console.error('ERROR!'); } }); });
什么是查找,修改和保存User
模型的实例的语法?
为什么不使用Model.update ? 毕竟,您不是使用find的用户来更新其属性:
User.update({username: oldUsername}, { username: newUser.username, password: newUser.password, rights: newUser.rights }, function(err, numberAffected, rawResponse) { //handle it })
您的callback的user
参数是一个数组与find
。 查询单个实例时使用findOne
而不是find
。
User.findOne({username: oldUsername}, function (err, user) { user.username = newUser.username; user.password = newUser.password; user.rights = newUser.rights; user.save(function (err) { if(err) { console.error('ERROR!'); } }); });
如果你想使用find
,就像我想要在客户端进行任何validation。
find
返回一个ARRAY对象
findOne
只返回一个对象
添加user = user[0]
使保存方法为我工作。
这是你放的地方。
User.find({username: oldUsername}, function (err, user) { user = user[0]; user.username = newUser.username; user.password = newUser.password; user.rights = newUser.rights; user.save(function (err) { if(err) { console.error('ERROR!'); } }); });