[英]Mongoose - Delete property from SubDocument
我有以下貓鼬模式和代碼:
架構:
{
...
inv: {
type: Object,
default: {}
},
...
}
代碼(版本 1),其中targetData
是 Mongoose Document
, item
是String
,而amount
是Number
:
targetData.inv[item] = targetData.inv[item] - amount;
if (!targetData.inv[item]) delete targetData.inv[item];
await targetData.save();
代碼(版本 2):
targetData.inv[item] = targetData.inv[item] - amount;
if (!targetData.inv[item]) targetData.inv[item] = undefined;
await targetData.save();
問題是這些嘗試都沒有從文檔中刪除targetData.inv[item]
。 我的目標是從子文檔中刪除一個項目,比如"thing"
。 例如:
前:
{
...
inv: {
thing: 5
},
...
}
后:
{
...
inv: {},
...
}
注意:當amount
是小於一個數5
(在上述的例子),則代碼工作正常。 如果我刪除所有5
,那就是它不更新時,它將保持為5
。
注 2:我使用的是貓鼬 5.3.15
我怎樣才能做到這一點?
編輯:看起來只有在inv
只有 1 個屬性時才會發生這種情況。 像inv: { thing: 5, anotherThing: 6 }
這樣的東西可以與delete
關鍵字完美配合。
發現出了什么問題。 我需要做的就是使用targetData.markModified("inv")
手動告訴 Mongoose inv
已被修改。 文檔。 這是由於 SchemaType 被混合( Object
)
我知道你解決了這個問題,但我有一個想法。 通常在這種情況下,我想獲取文檔並遍歷對象並找到項目並將其刪除並再次保存文檔。 這是我正在做的一種天真的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.