我有这个 Mongoose 架构:
var UrlSchema = new mongoose.Schema({
description: String
});
然后,我创建一个模型实例:
var newUrl = new Url({
"description": "test"
});
newUrl.save(function (err, doc) {
if (err) console.log(err);
else{
Url.update({_id: doc._id},{description: "a"});
}
});
但是执行了任何更新...为什么? 谢谢
最佳答案
您需要向更新方法添加回调或调用#exec()
来执行更新:
var newUrl = new Url({
"description": "test"
});
newUrl.save(function (err, doc) {
if (err) console.log(err);
else{
Url.update({_id: doc._id},{description: "a"}, function (err, numAffected) {
// numAffected should be 1
});
// --OR--
Url.update({_id: doc._id},{description: "a"}).exec();
}
});
仅供引用:我个人远离 update
因为它绕过了默认值、setter、中间件、验证等,这也是使用 mongoose 这样的 ODM 的主要原因。我仅在处理私有(private)数据(无用户输入)和自动递增值时使用 update
。我会重写如下:
var newUrl = new URL({
"description": "test"
});
newUrl.save(function(err, doc, numAffected) {
if (err) console.log(err);
else {
doc.set('description', 'a');
doc.save();
}
});
关于node.js - Mongoose:无法在保存回调中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358370/