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

时间:2016-06-17 20:58:50

标签: react-native realm

我正在尝试使用for循环更新realm中的多个对象:

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

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

1 个答案:

答案 0 :(得分: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;
    }
});

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