Javascript 在firebase数据库中搜索具有特定键值的元素对象

Javascript 在firebase数据库中搜索具有特定键值的元素对象,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我试图在firebase数据库中使用userkey的特定值进行搜索,但我遇到了以下问题 我想获取,如果我传递了用户密钥11112,那么当我传递11113时,将出现两条记录,然后出现一条记录 尽管我尝试了下面的代码,但还是出现了错误。 firebase脚本:- <script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.15/firebase.js'></script> 控制台错

我试图在firebase数据库中使用userkey的特定值进行搜索,但我遇到了以下问题

我想获取,如果我传递了用户密钥11112,那么当我传递11113时,将出现两条记录,然后出现一条记录

尽管我尝试了下面的代码,但还是出现了错误。 firebase脚本:-

 <script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.15/firebase.js'></script>
控制台错误:

Uncaught TypeError: ref.orderBy is not a function
您的错误:

未捕获类型错误:ref.orderBy不是函数

告诉它找不到函数
orderBy
,这是因为它不存在

您正在查找
orderByChild

var ref = new Firebase('fire-base-url');
ref.orderByChild("userkey").equalTo("11112").once("value", function(snapshot) {
    console.log(snapshot.key);
});

参考资料:

您的代码有两个问题

  • 正如@theblindprophet已经提到的,您应该使用
    orderByChild
    而不是
    orderBy
  • 您正在使用旧的firebase SDK。它不适用于在中创建的应用程序

    请确保将新的3.1 firebase sdk与

    <script type='text/javascript' src='https://www.gstatic.com/firebasejs/3.1.0/firebase.js'></script>
    
    您可以通过转到控制台,单击应用程序名称并按
    将Firebase添加到Web应用程序
    来获取配置详细信息

    然后,要获取
    ref
    对象,需要下面的代码

    var ref=firebase.database().ref()


  • 看看这个完整的工作示例。

    抓取uid值的快照。然后将userkey与传入的搜索参数进行比较

    var rootRef = new Firebase('fire-base-url');
    var userRef = rootRef.child(user.uid);
    userRef.on('value', function(snapshot){
      var myDbKey = snapshot.child("userkey");
      if (mySearchKey === myDbKey) {
        ...
      }
    });
    

    您收到了什么错误?我在控制台收到了错误消息“uncaughttypeerror:ref.orderByChild不是函数”,我正在使用上述firebase.js。这是预防吗?您使用的是非常旧的版本。请尝试使用以下格式:
    https://.firebaseio.com/
    新Firebase内部
    您知道我为什么会出现
    未捕获错误:Query.equalTo失败:第一个参数在属性“事件”中包含未定义的内容
    ?Firebase警告:使用未指定的索引。考虑在您的安全规则中添加“.Noxon”:“作者”AT /用户,以获得更好的性能。jsfiddle@bhaskarbhatt正如警告信息所说。您可以通过在数据库规则(控制台->数据库->规则)中添加
    “.indexOn”:“author”
    来修复它。我刚刚在我的应用程序中添加了它,您将不会在JSFIDLE中再次看到它。
      var config = {
        apiKey: "",
        authDomain: "",
        databaseURL: "",
        storageBucket: "",
      };
      firebase.initializeApp(config);
    
    var rootRef = new Firebase('fire-base-url');
    var userRef = rootRef.child(user.uid);
    userRef.on('value', function(snapshot){
      var myDbKey = snapshot.child("userkey");
      if (mySearchKey === myDbKey) {
        ...
      }
    });