abd*_*dul 3 javascript realm react-native
我想更新特定模式的现有数据中的值
class Car {}
Car.schema = {
name: 'Car',
properties: {
make: 'string',
}
};
let realm = new Realm({schema: [Car,]});
realm.write(() => {
let myCar = realm.create('Car', {
make: 'Ford',
model: 'Focus',
miles: 2000,
});
});
realm.write(() => {
let myCar = realm.create('Car', {
make: 'Ford',
model: 'Focus',
miles: 2000,
});
});
realm.write(() => {
let myCar = realm.create('Car', {
model: 'Focus',
});
})
Run Code Online (Sandbox Code Playgroud)
现在,如果我想从多个记录中更新此“模型”属性,我该怎么做。
要更新多个记录的属性,您需要从领域获取记录,然后循环遍历它们以进行更改。因此,在所有写入之后(确保回调函数已经运行),您将执行类似的操作。
const cars = realm.objects('Car');
realm.write(() => {
cars.forEach(car => {
// apply your changes to car here
car.model = 'Some New Model';
});
});
Run Code Online (Sandbox Code Playgroud)
需要注意的是,由于这些写入发生在回调函数中,因此您需要确保此代码在示例中编写的回调完成后运行。
另外,我假设realm.write上面的三个单独的方法仅作为示例,但如果您需要一次将多个内容写入领域,请确保将所有写入合并为一个(realm.write如果可能)。通过上面的几个调用,不会出现任何明显的性能问题,但是当您尝试一次写入数百个调用时,您将遇到相当严重的瓶颈。
另一方面,如果您正在寻找一种简单的方法来管理监听领域数据的变化,我建议您看看react-native-realm。全面披露:这是我编写的一个库,但我发现它很有帮助,因为不必记住在每个组件安装和卸载时连接和拆卸事件侦听器。