如何启用全局主键更新对象
对于第一个实例,我创建 Realm 对象并通过主键传递 true 进行更新,它适用于根级别对象,但子对象在第二次运行时抛出错误
错误:尝试使用现有主键值创建“类别”类型的对象
有没有办法通过全局主键设置更新
这是我的结构
class Response extends Realm.Object {}
Response.schema = {
name: 'Response',
primaryKey: 'id',
properties: {
id:'int', // primary key
categories: {type: 'list', objectType: 'CategoryList'},
}
};
class CategoryList extends Realm.Object {}
CategoryList.schema = {
name: 'CategoryList',
properties: {
category: {type: 'Category'},
}
};
Category extends Realm.Object {}
Category.schema = {
primaryKey:'categoryId',
name: 'Category',
properties: {
categoryId:'string',
name:'string',
itemsCount:'int',
createdDate:'string'
}
};
这就是我坚持到数据库的方式
let Response = realm.objects('Response');
let CategoryList = realm.objects('CategoryList');
realm.write(()=>{
realm.create('Response', {id:1,name: 'Response',categories: CategoryList},true);
let Categories = Response[0].categories;
for (let i=0;i<responseData.categories.length;i++){
Categories.push(responseData.categories[i]);
}
});
最佳答案
我的猜测是您从这一行收到此错误:
Categories.push(responseData.categories[i]);
push
隐式尝试创建新类别,而不是更新/重用现有类别。尝试将其更改为:
Categories.push(realm.create('Catetory', responseData.categories[i], true));
这将重用现有类别(如果存在),或者创建它们(如果不存在)。
关于react-native - Realm 和 React Native 启用使用嵌套对象的主键更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616252/