检查firebase DB中是否存在值

Gab*_*iel 34 javascript firebase firebase-realtime-database

firebase中是否有方法可以检查DB中是否存在值?Firebase有方法.exists(),但根据文档,它只检查键.

我有以下结构:

{
  "users": {
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "Peter",
      "ID": "U1EL9SSUQ",
      "username": "peter01"
    },
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "John",
      "ID": "U1EL5623",
      "username": "john.doe"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想检查是否U1EL5623存在具有值的ID .

ado*_*srs 55

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

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

观察:

如果您在不同的场景中,您拥有对象可能的确切ref路径,则无需添加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();
    }
});
Run Code Online (Sandbox Code Playgroud)