gpt4 book ai didi

ios - 只从 Firebase 数据库读取新事件

转载 作者:行者123 更新时间:2023-11-29 00:25:24 25 4
gpt4 key购买 nike

当我意识到 Firebase 具有离线功能时,我在我的 iOS 应用程序中实现 Core Data 的工作已经完成一半,这几乎可以模仿我一直试图完成的事情。

在我的数据库中,其结构如下:

- Users
- user1
- user2
- Groups
- group1
- members
- user1
- events
- event1_By_Auto_Key
- event2_By_Auto_Key

我想在本地存储用户已获取的所有事件,这样我就不必每次需要获取组的事件时都读取所有事件。现在我想我只会坚持使用 Firebase 的离线功能而不是使用 Core Data,我有一个关于如何有效地从数据库读取事件的问题。

从我的数据库结构中可以看出,事件是使用 childByAutoId().setValue(data) 方法存储的,这意味着插入时键是未知的。因此,我针对给定组的控制台可能如下所示:

console

我的问题是:我如何才能只读取组中的新事件?我实现 Core Data 的原因是这样我可以缓存已经获取的事件,但我不确定如何确保我不会重新读取数据。

最佳答案

您可以使用一些策略。由于生成的 id 在词法上总是大于任何现有的,因此您可以在查询中使用 startAt() 和您已有的最新记录。您只需要跳过与您拥有的最后一个 ID 相匹配的记录。如果您在事件中保留时间戳,则可以使用 orderByChild() 和最后一个时间戳并增加一毫秒,然后您将不会获得任何已有的记录。它会是这样的:

function getNewEvents(group, arrayOfExistingIds) {
let lastId = arrayOfExistingIds.sort().pop(),
ref = admin.database().ref('/Groups/' + group + '/events')
.orderByKey().startAt(lastId).on('value', function(snap){
if (snap.key === lastId) return;
console.log('New record: ' + snap.key);
})
}

关于ios - 只从 Firebase 数据库读取新事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com