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

时间:2016-07-26 12:46:31

标签: javascript firebase firebase-realtime-database

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

我想要获取,如果我传递用户密钥11112,那么当我通过11113时会有两条记录到来,然后会有一条记录。

enter image description here

即使我尝试使用下面的代码但是收到错误。 firebase脚本: -

 <script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.15/firebase.js'></script>

代码:

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

控制台错误:

Uncaught TypeError: ref.orderBy is not a function

3 个答案:

答案 0 :(得分:4)

您的代码存在两个问题。

  1. 正如@theblindprophet已经提到的那样,您应该使用orderByChild代替orderBy
  2. 您正在使用旧的firebase SDK。它无法使用new firebase console中创建的应用程序。

    请确保使用新的3.1 firebase sdk和

    <script type='text/javascript' src='https://www.gstatic.com/firebasejs/3.1.0/firebase.js'></script>
    

    然后您应该使用

    初始化您的应用
      var config = {
        apiKey: "",
        authDomain: "",
        databaseURL: "",
        storageBucket: "",
      };
      firebase.initializeApp(config);
    

    您可以转到控制台,点击应用程序名称并按Add Firebase to your Web app来获取配置详细信息。

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

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

  3. 查看此jsFiddle以查看完整的工作示例。

答案 1 :(得分:2)

您的错误:

  

未捕获的TypeError:ref.orderBy不是函数

告诉它无法找到函数orderBy,因为它不存在。

您正在寻找orderByChild

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

参考:orderByChild and equalTo

答案 2 :(得分:0)

抓取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) {
    ...
  }
});