簡體   English   中英

貓鼬-更新數組內的對象

[英]Mongoose - updating object inside an array

我有一個看起來像這樣的架構:

const RefSchema = {
  active: Boolean,
  items: [{}],
};
const TopLevelSchema = new mongoose.Schema({
  refs: [RefSchema],
  ...
}, { timestamps: true });

我正在進行API調用,以使用其id (在rid下方)和API調用內的一些數據來更新其中一個refs

async function updateRef(id, rid, data) {
  // First get the TopLevelSchema by the ID - this is OK
  const instance = await this.findById(id).exec();
  // Prepare the data:
  const $set = _.mapKeys(data, (v, k) => `refs.$.${k}`);
  // Update the data
  await instance.update(
    { 'refs.id': rid },
    { $set },
  );

發生的事情是數據(例如,我正在傳遞{ active: true } )沒有更新。

我究竟做錯了什么?

無需先獲取TopLevelSchema等。您可以像這樣更新子級:

async function updateRef(rid, data) {
   let $set = _.mapKeys(data, (v, k) => `refs.$.${k}`)
   await TopLevelSchema.updateOne(
     { 'refs._id' : mongoose.Types.ObjectId(rid) },
     { $set })
}

您是否在使用自定義ID? 因為您應該使用{ '_id': rid }而不是{ 'refs.id': rid }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM