【发布时间】:2016-06-03 09:39:24
【问题描述】:
我了解该领域的工作方式类似于 mongodb。我的问题是,如果我想删除孩子和他们的孩子(基本上是从我要删除的节点开始的整个数据分支)怎么办?
This question 让我了解了关系在领域中的运作方式。但我还是一头雾水。
【问题讨论】:
标签: react-native realm
我了解该领域的工作方式类似于 mongodb。我的问题是,如果我想删除孩子和他们的孩子(基本上是从我要删除的节点开始的整个数据分支)怎么办?
This question 让我了解了关系在领域中的运作方式。但我还是一头雾水。
【问题讨论】:
标签: react-native realm
Realm 尚不支持级联删除。在支持此功能之前,您需要手动删除子对象。像下面这样的东西可能会起作用:
function deleteObjectGraph(object, type, realm) {
let objectSchema = realm.schema.find((objectSchema) => objectSchema.name == type);
// delete all child objects
for (let propName in objectSchema.properties) {
let prop = objectSchema.properties[propName];
// for list properties delete all elements and their children
if (prop.type == 'list') {
object[propName].forEach((listObject) =>
deleteObjectGraph(listObject, prop.objectType, realm);
);
}
// for object properties delete object and all children
if (prop.type == 'object' && object[propName] != null) {
deleteObjectGraph(object[propName], prop.objectType, realm);
}
}
// delete the object
realm.delete(object);
}
我没有对此进行测试,这不适用于圆形对象图,或者在重复使用对象的情况下可能会出现问题。
【讨论】: