簡體   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