【发布时间】:2021-07-21 06:35:10
【问题描述】:
我有一个像这样的 ONE TO MANY 架构:
店铺模式
const Shop = {
name: "Shop",
properties: {
_id: "objectId",
products:"Products[]"
}
}
产品架构
const Products = {
name: "Products",
properties: {
_id: "objectId",
name : "string",
}
}
一家商店有很多产品,如下图所示
_id:'60f73ca7c1a70278596cc7d0',
products:[
{_id:1, name:'product1'},
{_id:2, name: 'product2'},
{_id:3, name: 'product3'}
]
现在,假设我要删除 product2,我该如何使用 mongodb 领域?
到目前为止我已经尝试过什么
const obj = realm.objects('Shop').filtered("_id == $0 AND products._id == $1", ObjectId('60f73ca7c1a70278596cc7d0'), ObjectId('2'))
realm.write(() => {
realm.delete(obj)
})
但这不会删除 products 数组中的项目。
如何使用领域删除此一对多关系中产品数组中的特定元素?
【问题讨论】:
-
为了清楚起见;您想从阵列中移除产品还是完全移除产品?例如从数组中删除它不会删除实际对象。此外,您的过滤器将返回 Shop 对象,而不是产品对象
obj = realm.objects('Shop')。是这个意图吗?如果没有,并且您想删除产品,则需要过滤 Product 对象,或者,一旦您拥有 shop 对象(结果),然后过滤您要删除的产品。 -
@Jay (i) 我想完全删除产品(删除它)。 (ii) 我希望过滤器返回一个产品对象,以便我可以删除所需的产品。 (iii) 你能告诉我如何过滤产品对象的代码,以便我可以删除特定产品吗?
-
这实际上在文档中有所介绍。首先查询该对象Filter For Object,然后在拥有它后将其删除Delete an Object。如果你想删除product1,你可以查询“product1”或者使用它的ID,如果你知道的话。
-
@Jay 我已经阅读了你指向这里的那些文档,但我仍然无法解决我的问题。你能告诉我如何解决我在问题中解释的问题的工作示例代码吗?
标签: javascript realm mongodb-realm