Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase父值检索_Java_Firebase_Parent Child - Fatal编程技术网

Java Firebase父值检索

Java Firebase父值检索,java,firebase,parent-child,Java,Firebase,Parent Child,我想使用用户电话号码在firebase中检索用户id。在我的场景中,当用户单击其中一个号码列表时,用户必须能够识别所选用户的uid。是否有可能使用子密钥回溯父项 "simplelogin:17" : { "name" : "pro", "number" : "1234" }, "simplelogin:18" : { "name" : "Safar", "number" : "1234" }, "simplelogi

我想使用用户电话号码在firebase中检索用户id。在我的场景中,当用户单击其中一个号码列表时,用户必须能够识别所选用户的uid。是否有可能使用子密钥回溯父项

"simplelogin:17" : {
      "name" : "pro",
      "number" : "1234"
    },
    "simplelogin:18" : {
      "name" : "Safar",
      "number" : "1234"
    },
    "simplelogin:19" : {
      "name" : "gp",
      "number" : "345465"
    },
    "simplelogin:20" : {
      "name" : "jose",
      "number" : "346"
    },
    "simplelogin:21" : {
      "name" : "jem",
      "number" : "12344"
    },
我尝试了以下方法…但是结果似乎为空

System.out.println("methodddd"+ getKeyFromValue(users,"number=12344,name=jem"));
System.out.println("getkeymethodddd"+ getKeysByValue(users,"number=12344,name=jem"));

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    Set<T> keys = new HashSet<T>();
    for (Map.Entry<T, E> entry : map.entrySet()) {
        if (value.equals(entry.getValue())) {
            keys.add(entry.getKey());
        }
    }
    return keys;
}

public static Object getKeyFromValue(Map hm, Object value) {
    for (Object o : hm.keySet()) {
        if (hm.get(o).equals(value)) {
            return o;
        }
    }
    return null;
}
System.out.println(“methodddd”+getKeyFromValue(users,number=12344,name=jem”);
System.out.println(“getkeymethodddd”+getKeyByValue(用户,“number=12344,name=jem”);
公共静态设置getKeysByValue(映射映射,E值){
Set keys=new HashSet();
对于(Map.Entry:Map.entrySet()){
if(value.equals(entry.getValue())){
key.add(entry.getKey());
}
}
返回键;
}
公共静态对象getKeyFromValue(映射hm,对象值){
对于(对象o:hm.keySet()){
如果(hm.get(o).等于(值)){
返回o;
}
}
返回null;
}

我将重组您的数据库,并通过包含用户ID的电话号码创建索引。是的,这是一个有效的方法…我已经按照你的建议重组了我的数据库。但是,现在当我的用户登录时,我需要我的应用程序识别哪个用户登录。我使用了登录和密码方法(“提供者:密码”)。现在我再次需要通过UID追溯登录用户的电话号码。那么你需要有两个索引,一个是通过电话,一个是通过UID。您应该在方便的时候对数据进行非规范化处理。谢谢。我已经按照你的建议将其非规范化了。我想知道这在firebase ref7=new firebase(“)中是否可能;我得到了空指针异常。如果它是一个有效链接,我不明白为什么不可以。