我使用Realm作为我的反应原生项目的数据库。
当我尝试从realmDB中删除对象时,我收到类似'访问类型为XXX的对象已被无效或已删除'的错误。 该对象被删除,但应用程序显示错误。
经过一些研究后,我发现了 isValid()属性作为解决方案。但是它如何与我的代码一起使用,这个问题背后的真正原因是什么?
DBScheme
export const deleteNewTemplateScheme = newTemplateObjectId => new Promise((resolve, reject) => {
Realm.open(NewTemplateScheme).then(realm => {
realm.write(() => {
let deletingNewTemplateObject = realm.objectForPrimaryKey(NEW_TEMPLATE_SCHEMA, newTemplateObjectId);
realm.delete(deletingNewTemplateObject);
resolve();
});
}).catch((error) => reject(error));;
});
撷取
deleteNewTemplateScheme(this.state.content.id).then(()=> {
Alert.alert('Deleted');
}).catch((error) => {
Alert.alert('Failed to delete todoList: ', error);
});
答案 0 :(得分:1)
最后,我自己找到了解决方案。看来,如果将对象传递给导航或将新组件作为props传递,则删除此对象(当对象仍在导航堆栈或新组件中时),它将触发此错误。
我之前做的是创建一个新组件并将领域对象作为道具传递,现在我所做的是在父类Itself中创建相同的组件(因此,不需要传递道具)。所以现在工作正常。