【发布时间】:2017-07-05 15:04:54
【问题描述】:
两个应用使用相同的 firebase 数据库。一个应用,即 A 正在使用 setValue 写入一些值。第二个应用,即 B 正在尝试使用 addListenerForSingleValueEvent 读取一些数据,这些数据与 A 相关,例如 A 用户个人资料信息同时。这导致读取数据库时 B 应用程序中的数据快照为空值。谁能指导我如何避免这种情况。
为了澄清一下,A 正在写入与 B 正在访问的节点不同的其他节点。
这就是我从 B 应用程序访问数据的方式。
DatabaseReference usersRef = MyDatabaseUtils.getUsersReference();
usersRef.orderByChild("userId").equalTo(userIdValue).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get value
if (dataSnapshot.getChildrenCount() > 0) {
// Do something
} else {
// Show error
}
}
@Override
public void onCancelled(final DatabaseError databaseError) {
// Show error
}
});
如果我在 B 应用程序中阅读时停止 A 写入,一切正常。
【问题讨论】:
-
您能否在应用 B 中包含使用
addListenerForSingleValueEvent的函数或类的代码 sn-p? -
@PatNeedham,我已经更新了帖子。
-
你能解释一下应用 A 中发生的确切时刻/动作,它导致来自 B 的
ValueEventListener触发其onDataChange功能?并且包含来自 A 的相关代码 sn-p 也可能会有所帮助。 -
如果您收到 NullPointerException,还有一个堆栈跟踪准确地指向引发异常的行。请找到堆栈跟踪,在您的问题中分享,并指出引发异常的行。
-
我没有 NullPointerException。 dataSnapshot 结果为空。
标签: android firebase firebase-realtime-database