Realm React Native - 如何更新循环中的多个对象

Irf*_*yaz 5 realm react-native

我试图更新realm中的多个对象使用for循环反应原生如下:

let pendingReadings = database.objects('Readings').filtered('synced = false');
database.write(() => {
    for (var k=0;k<pendingReadings.length;k++) {
        pendingReadings[k].synced = true;
    }
});
Run Code Online (Sandbox Code Playgroud)

结果应该标记所有读数同步为真.但是,它仅将备选对象标记为已同步(可能在下一个请求进入时,先前的写入未完成).一次更新所有条目的最佳方法是什么?

小智 12

Realm的查询结果是实时更新.您可以通过各种方式调整循环来解决这个问题,但是通过snapshot()在结果上使用该方法可以获得最佳性能......

let pendingReadings = database.objects('Readings')
                              .filtered('synced = false')
                              .snapshot();
database.write(() => {
    for (let i = 0, len = pendingReadings.length; i < len; i++) {
        pendingReadings[i].synced = true;
    }
});
Run Code Online (Sandbox Code Playgroud)

还要注意我调整循环只检索length一次,这也会略微提高性能.for...of如果您愿意,可以使用带有Realm集合的循环,尽管与上面的"原始"循环相比,这样做会有轻微的性能损失.