当前位置: 首页 > 知识库问答 >
问题:

检查firebase DB中是否存在值

仲孙小云
2023-03-14

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

我有以下结构:

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

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

共有3个答案

崔琦
2023-03-14

我还不能发表评论,所以我发布了一个答案:

要添加到建议的答案中,如果您想查询是否存在任何用户,可以尝试通过添加来提高性能。限制第一(1)或。limitToLast(1)。这样,您可以将检索到的数据限制到最低限度:

//Check if any users exist
firebase.database().ref(`users`).limitToFirst(1).once("value", snapshot => {
   if (snapshot.exists()){
      console.log("exists!");
      // TODO: Handle that users do exist
      return true;
   }

   // TODO: Handle that users do not exist
});

资料来源:https://firebase.google.com/docs/reference/js/firebase.database.Query#limitToFirst

祁永嘉
2023-03-14

如果您想检查Firebase中是否存在电子邮件,这是一个类似的解决方案

firebase.app().database().ref("shops").orderByChild("email")
   .equalTo(user.email).once("value", snapshot => {

            const userData = snapshot.val();

            // Check if it is a SHOP.
            if (userData) {
              console.log("Shop logged in!");
              this.setState({
                isAdminLoggedIn: false,
                isUserLoggedIn: false,
                isShopLoggedIn: true,
                isNoneLoggedIn: false
              });

            // Check if it is a USER.
            } else {
              console.log("User logged in");
              this.setState({
                isAdminLoggedIn: false,
                isUserLoggedIn: true,
                isShopLoggedIn: false,
                isNoneLoggedIn: false
              });
            }
        });
钮鸿煊
2023-03-14

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

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

如果您处于另一个场景中,您拥有对象可能所在的精确参考路径,则不需要添加orderByChild和equalTo。在这种情况下,您可以直接获取对象的路径,这样就不需要从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();
   }
});
 类似资料:
  • 问题内容: 如何检查扫描仪中写入的值是否存在? 问题答案: 只需使用ArrayList.contains(desiredElement)即可。例如,如果您要从示例中查找conta1帐户,则可以使用以下方法: 编辑: 请注意,为了使其正常工作,您将需要适当地重写equals()和hashCode()方法。如果使用的是Eclipse IDE,则可以通过首先打开对象的源文件并选择来生成这些方法。

  • 问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。

  • 问题内容: 我正在尝试检查$ _POST是否存在,如果存在,则在另一个字符串中打印它,如果不存在,则根本不打印。 像这样的东西: 任何帮助将是巨大的! 问题答案:

  • 我需要检查一列是否存在,如果不存在,请添加它。根据我的研究,sqlite似乎不支持是否应该使用语句和case语句。 以下是我目前掌握的情况: 但我得到了一个错误:接近“ALTER”:语法错误。 有什么想法吗?

  • 问题内容: 我有一个名为“ bob”的数组,其中包含值。 我如何才能知道在没有迭代的情况下名为bob的数组中是否存在“傻”值? 问题答案: 您可以使用方法。为此,您需要将数组转换为列表。您可以使用以下方法:

  • 问题内容: 我有下一个JSON: 知道JSON对象中是否存在“ dog”值的最佳方法是什么? 谢谢。 解决方案1 解决方案2(JQuery) 解决方案3(使用some()方法) 问题答案: JSON变量引用具有一个称为“名称”的属性的对象数组。我不知道最好的方法,但这就是我的工作吗?