我有这个猫鼬模式:
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"});
}
});
但是进行了任何更新......为什么? 感谢
答案 0 :(得分:2)
您需要为更新方法添加回调或调用#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
,因为它绕过默认设置,设置器,中间件,验证等,这是使用像mongoose这样的ODM的主要原因。我在处理私有数据(没有用户输入)和自动递增值时只使用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();
}
});