我有一个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
,在DataContainer
数组中找到一个data
,然后调用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) {
// ...
});
});