firebase中是否有一种方法可以检查DB中是否存在值? Firebase具有.exists()方法,但是根据文档,它仅检查 key 。

我有以下结构:

{
  "users": {
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "Peter",
      "ID": "U1EL9SSUQ",
      "username": "peter01"
    },
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "John",
      "ID": "U1EL5623",
      "username": "john.doe"
    }
  }
}

我想检查ID为U1EL5623的ID是否存在。

最佳答案

exists()方法是firet查询返回的snapshot对象的一部分。因此,请记住,您将无法避免检索数据以验证数据是否存在

ref.child("users").orderByChild("ID").equalTo("U1EL5623").once("value",snapshot => {
    if (snapshot.exists()){
      const userData = snapshot.val();
      console.log("exists!", userData);
    }
});

观察结果:
如果您处于不同的场景中,而您拥有对象可能所在的确切引用路径,则无需添加orderByChildequalTo。在这种情况下,您可以直接获取对象的路径,因此不需要从Firebase进行任何搜索处理。另外,如果您知道对象必须具有的属性之一,则可以使用作为摘要,使其仅检索此属性,而不检索整个对象。结果将是更快的检查。
//every user must have an email
firebase.database().ref(`users/${userId}/email`).once("value", snapshot => {
   if (snapshot.exists()){
      console.log("exists!");
      const email = snapshot.val();
   }
});

关于javascript - 检查Firebase数据库中是否存在值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37910008/

10-09 17:46
查看更多