Realm 删除一对多关系中的对象
Realm Delete an Object in One to Many relationship
我有一个像这样的一对多模式:
商店架构
const Shop = {
name: "Shop",
properties: {
_id: "objectId",
products:"Products[]"
}
}
产品架构
const Products = {
name: "Products",
properties: {
_id: "objectId",
name : "string",
}
}
一家商店有很多产品,如下所示'pictorially'
_id:'60f73ca7c1a70278596cc7d0',
products:[
{_id:1, name:'product1'},
{_id:2, name: 'product2'},
{_id:3, name: 'product3'}
]
现在,假设我要删除 product2,我该如何使用 mongodb 领域来完成?
到目前为止我尝试了什么
const obj = realm.objects('Shop').filtered("_id == [=13=] AND products._id == ", ObjectId('60f73ca7c1a70278596cc7d0'), ObjectId('2'))
realm.write(() => {
realm.delete(obj)
})
但这不会删除产品数组中的项目。
如何使用领域删除此一对多关系中产品数组中的特定元素?
问题中的代码非常接近正确,您只需过滤要删除的产品而不是商店。不清楚您是否知道产品 _id 或名称,但您可以按其中任何一个进行过滤。
以下代码用于过滤 _id 为 1 的产品,然后将其删除(这也会将其从包含对它的引用的任何列表中删除。
const prod = realm.objects('Products').filtered("_id == 1");
realm.write(() => {
realm.delete(prod);
prod == null;
})
以上内容摘自文档Filter Query and Delete An Object
请记住,这将删除 ID = 1 的所有产品,因此只要 _id 是唯一的就可以。
我有一个像这样的一对多模式:
商店架构
const Shop = {
name: "Shop",
properties: {
_id: "objectId",
products:"Products[]"
}
}
产品架构
const Products = {
name: "Products",
properties: {
_id: "objectId",
name : "string",
}
}
一家商店有很多产品,如下所示'pictorially'
_id:'60f73ca7c1a70278596cc7d0',
products:[
{_id:1, name:'product1'},
{_id:2, name: 'product2'},
{_id:3, name: 'product3'}
]
现在,假设我要删除 product2,我该如何使用 mongodb 领域来完成?
到目前为止我尝试了什么
const obj = realm.objects('Shop').filtered("_id == [=13=] AND products._id == ", ObjectId('60f73ca7c1a70278596cc7d0'), ObjectId('2'))
realm.write(() => {
realm.delete(obj)
})
但这不会删除产品数组中的项目。
如何使用领域删除此一对多关系中产品数组中的特定元素?
问题中的代码非常接近正确,您只需过滤要删除的产品而不是商店。不清楚您是否知道产品 _id 或名称,但您可以按其中任何一个进行过滤。
以下代码用于过滤 _id 为 1 的产品,然后将其删除(这也会将其从包含对它的引用的任何列表中删除。
const prod = realm.objects('Products').filtered("_id == 1");
realm.write(() => {
realm.delete(prod);
prod == null;
})
以上内容摘自文档Filter Query and Delete An Object
请记住,这将删除 ID = 1 的所有产品,因此只要 _id 是唯一的就可以。