gpt4 book ai didi

android - Firebase 在与 addListenerForSingleValueEvent() 一起使用时返回旧数据集

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:46 25 4
gpt4 key购买 nike

我有一个查询要进行一次并且不想保留监听器,以便在发送手动触发器时更新数据。

所以我的查询是这样的:

var ref = this.instance.child('/user/manish/today/events')
.orderByChild('endDateTime')
.endAt(endEventTime)
.limitToLast(10)
.addListenerForSingleValueEvent(this.previousEventListeners);


this.previousEventListeners = new com.google.firebase.database.ValueEventListener({
onDataChange: (snapshot) => {
console.log("Value from native firebase access");
console.dump(this.testing(snapshot.getValue()));
let result = {
value : this.testing(snapshot.getValue()),
type : "ValueChanged"
};
console.dump(result);
},
onCancelled: (databaseError) => {
console.log(databaseError.getMessage());
hideActivtiyIndicator();
}
});

即使添加了符合查询条件的新记录,它也会返回相同的数据集。

谢谢

最佳答案

是的,我们在自己的应用中遇到过这种行为。如果您需要启用磁盘持久性的最新数据,则需要订阅所有事件值更新,而不仅仅是调用单个值。这特别令人困惑,因为尽管有这种行为,Firebase 仍会调用服务器以获取新值 - 它只是不会将那个值返回给您!

我就此向 Firebase 提出了支持请求,他们说这是预期的行为。我还建议他们澄清文档,他们说感谢您提供全面的反馈。我们确实重视开发人员的这种投入。这将包含在我们的功能请求列表中,并将与我们的工程师讨论。遗憾的是,我无法分享任何时间表或明确的细节,因为这将在内部进行监控。

希望这能澄清情况。对于它的值(value),我们通过添加附加功能的 FIRDatabaseReference 类别(iOS,为您的平台使用适当的比喻)来解决这个问题。它调用 SingleValueEvent,然后在 500 毫秒后再次调用它,将两次的值都返回给调用者。 (如果调用者在此期间离开,则回调采用弱引用。)500ms 似乎很合适 - 用户被赋予立即显示值,如果他们离线或网络速度慢,那是他们看到的一切。但是,如果他们在线并且具有良好的网络访问权限,这会在不久之后为他们提供最新数据。

关于android - Firebase 在与 addListenerForSingleValueEvent() 一起使用时返回旧数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42157764/

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