我有以下蒙鹅模式和代码:
模式:
{
...
inv: {
type: Object,
default: {}
},
...
}代码(第1版),其中targetData是猫鼬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"中删除一个项目,比如SubDocument。例如:
在此之前:
{
...
inv: {
thing: 5
},
...
}之后:
{
...
inv: {},
...
}注意:当amount小于5 (在上面的示例中)时,代码工作正常。如果我要删除所有的5,当它不更新时,它将保持为5。
注2:我使用的是猫鼬5.3.15
我怎样才能做到这一点?
编辑:看起来只有当inv只有一个属性时才会发生这种情况。拥有类似于inv: { thing: 5, anotherThing: 6 }的东西将与delete关键字完美地工作。
https://stackoverflow.com/questions/53972854
复制相似问题