![](/img/trans.png)
[英]Updating info with Mongoose, array inside object inside object dynamically
[英]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.