以下是树的预览:
我试着这样做:
mRef.orderByChild("desc").equalTo(des).addChildEventListener(new ChildEventListener()
{
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
mRef.orderByChild("userid").equalTo(uid).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
myParentNode = dataSnapshot.getKey();
}
});
});
但它返回先前访问过的节点的值。
注意:父节点“ASSIST Blog”包含许多可能具有相似值的子节点。
答案 0 :(得分:0)
您应该在检索到的getKey()
中调用dataSnapshot
方法:
final Query userQuery = mRef.orderByChild("First Name");
userQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
map.clear();
//Get the node from the datasnapshot
String myParentNode = dataSnapshot.getKey();
for (DataSnapshot child: dataSnapshot.getChildren())
{
String key = child.getKey().toString();
String value = child.getValue().toString();
map.put(key,value);
}
答案 1 :(得分:0)
如果没有对数据库进行某些更改,您无法使用Firebase Realtime数据库实现此目的。 Firebase实时数据库无法在多个条件下执行过滤。在SQL术语中,不能使用" multiple where子句"。如果要检查多个属性的匹配项,则必须创建一个复合字段,其中包含您要查找的内容的组合。例如,您需要一个字符串值,该字符串值由与您的desc
属性连接的userid
属性组成,为此,请参阅我的回答 post < /强>
如果您有兴趣,Firestore允许您过滤多个条件,为此我建议您看到official documentation。