【发布时间】:2019-05-16 08:11:35
【问题描述】:
Query sqlite = mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId);
sqlite.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("Message")) {
String msg = dataSnapshot.child("Message").getValue().toString();
String from = dataSnapshot.child("From").getValue().toString();
String time = dataSnapshot.child("Time").getValue().toString();
} else {
Toast.makeText(getApplicationContext(), "NULLLL", Toast.LENGTH_SHORT).show();
}
数据库
这是数据库中最基本的东西。我从来没有遇到过childEvent 或valueEvent 的问题,我现在想要一个事件,但我无法获取。
没有错误,因为我放了一个 if 语句,它显示 toast 为 null,这意味着 dataSnapshot 没有名为 messages 的子项,但它就在那里。我也试过放一个for循环,但没用
【问题讨论】:
-
您缺少将
child(UID)添加为从您的数据库中查找,请尝试一次。 -
但这就是推送 ID @JeelVankhede
-
根据您的数据库查询,没有为您的 UID 添加子项,因此数据库将直接引用 UID 子项,这就是您的 Message 为空的原因。
-
但我不知道 UID 对吧?那我怎么才能拿到它。通常数据库只是通过它,但为什么现在没有发生@JeelVankhede
-
如果您尝试硬编码这些 ID(
MessageSenderId和MessageRecieverId),您会得到预期的结果吗?
标签: java android database firebase firebase-realtime-database