[英]How can I update a Mongoose subdocument in an instance method?
我有一个Mongoose文档,其中包含一系列子文档,如下所示:
var RegionSchema = new Schema({
"metadata": {
"regionType": String,
"name": String,
"children": [{
"name": String,
"childType": String,
"id": Schema.ObjectId
}],
"parent": Schema.ObjectId
},
"data": [DataContainer]
});
在DataContainer
架构中,我想创建一个实例方法来更新其内部的数据。
为了清楚起见 ,我希望能够查找一个Region
,在data
数组中找到一个DataContainer
并调用诸如dataCont.update()
类的东西,其中DataContainer
实例可以执行this.save()
。 这可能吗?
干
this.save(function(err, saved) {
console.log(saved)
callback(err, saved);
});
在DataContainer
实例方法内部打印出undefined
。 回调被击中。
如果data
属性是子文档,则可以轻松地使用populate
并更新它:
Region.findOne({ _id: regionId })
.populate('data')
.exec(function (err, region) {
// ...
var data = region.data, // data container
dataItem = data[0];
dataItem.property = 'some value';
dataItem.save(function (err, item) {
//...
});
// or
dataItem.update({ $set: { property: 'some value' }}, function (err, item) {
// ...
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.