Ran*_*lue 40 javascript mongoose node.js
我有一个Mongoose User模型:
var User = mongoose.model('Users',
mongoose.Schema({
username: 'string',
password: 'string',
rights: 'string'
})
);
Run Code Online (Sandbox Code Playgroud)
我想找到一个User模型实例,修改它的属性,并保存更改.这是我试过的(这是错的!):
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!');
}
});
});
Run Code Online (Sandbox Code Playgroud)
查找,修改和保存User模型实例的语法是什么?
Joh*_*yHK 107
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!');
}
});
});
Run Code Online (Sandbox Code Playgroud)
sou*_*eck 50
为什么不使用Model.update?毕竟,除了更新它的属性之外,你没有使用找到的用户:
User.update({username: oldUsername}, {
username: newUser.username,
password: newUser.password,
rights: newUser.rights
}, function(err, numberAffected, rawResponse) {
//handle it
})
Run Code Online (Sandbox Code Playgroud)
findOne,修改字段并保存
User.findOne({username: oldUsername})
.then(user => {
user.username = newUser.username;
user.password = newUser.password;
user.rights = newUser.rights;
user.markModified('username');
user.markModified('password');
user.markModified('rights');
user.save(err => console.log(err));
});
Run Code Online (Sandbox Code Playgroud)
User.findOneAndUpdate({username: oldUsername}, {$set: { username: newUser.username, user: newUser.password, user:newUser.rights;}}, {new: true}, (err, doc) => {
if (err) {
console.log("Something wrong when updating data!");
}
console.log(doc);
});
Run Code Online (Sandbox Code Playgroud)
我想添加一些非常重要的内容。我经常使用 JohnnyHK 方法,但我注意到有时更改不会持久保存到数据库中。我用的时候.markModified就成功了。
User.findOne({username: oldUsername}, function (err, user) {
user.username = newUser.username;
user.password = newUser.password;
user.rights = newUser.rights;
user.markModified(username)
user.markModified(password)
user.markModified(rights)
user.save(function (err) {
if(err) {
console.error('ERROR!');
}
});
});
Run Code Online (Sandbox Code Playgroud)
在保存之前用 doc.markModified('pathToYourDate') 告诉 mongoose 有关更改的信息。
| 归档时间: |
|
| 查看次数: |
87558 次 |
| 最近记录: |