【发布时间】:2016-03-31 07:25:22
【问题描述】:
我在 mongoose 中实例化模型时注意到了这个有趣的事情——实例可以通过实例本身以外的其他方式进行更改。这是一个例子:
var articleSchema = new Schema({
name: 'String',
price: 'Number'
});
var Article = mongoose.model('Article', articleSchema);
var nexus = new Article({
name: 'Nexus 5',
price: 300
});
nexus.save(function(err, instance) {
instance.name = 'Nexus Five';
instance.save(function(err, instance2) {
instance2.name = 'Nexus 5ive';
instance2.save(function(err, instance3) {
console.log(nexus.name); //'Nexus 5ive'
});
});
});
正如您在示例中看到的,我从未更改过nexus 的name 属性,而是更改了save 函数在回调中返回的模型的属性。以这种方式更改数据可以吗?还是我应该坚持第一个定义的实例(即nexus 变量)?这似乎有点令人困惑,因为您很容易失去对正在处理的内容的控制。
【问题讨论】: