Каскадные удаления еще не поддерживаются в 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);
}
Я не проверял это, и это не будет работать для круговых графиков объекта или могут возникнуть проблемы в тех случаях, когда объекты повторно.