繁体   English   中英

如何在实例方法中更新Mongoose子文档?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM