Firebase数据库查询返回null(函数)

时间:2018-01-05 22:39:39

标签: javascript firebase firebase-realtime-database

我试图将一些触发的函数添加到我的firebase帐户但在此之前我想学习firebase查询的基础知识,所以我写了一个js文件并通过编写" node index.js&#来测试它34;在我的命令提示符下。从youtube等学到一些基本的查询并试图将它集成到我的js文件中,但到目前为止还没有运气。我的所有查询都返回null,我不明白我在做什么部分。你能看一下吗?

提前致谢。

我的数据库结构

<firebasename>
 users
   edRIPg8BcZU9YPbubp7HtQo7phl1
     sayilar: 2653
     status: "ok"
   hakan
     sayilar: 5000
     status: "waiting"
   mehmet
     sayilar: 7000
     status: "ok"

我的数据库规则:

{
  "rules": {
    "users": {
        ".read": true,
        ".write": true
    }
  }
}

我的index.js文件:

var firebase = require('firebase');

var config = {
  apiKey: "<my-api-key>",
  authDomain: "<firebasename>.firebaseio.com",
  databaseURL: "https://<firebasename>.firebaseio.com",

};
firebase.initializeApp(config);
ref = firebase.database().ref();
const events = ref.child('users').child('hakan');
const query =events.orderByChild('status').equalTo('ok').limitToFirst(2);

query.on("value", sorunsuz,sorunlu);

function sorunlu(error) {
  console.log("Something went wrong.");
  console.log(error);
}

function sorunsuz(data) {


    var fruits = data.val();
    console.log(fruits);
}

命令promt显示

  

     

FIREBASE警告:使用未指定的索引。您的数据将在客户端上下载和过滤。考虑添加&#34; .indexOn&#34;:&#34; status&#34;在/ users / hakan,根据您的安全规则获得更好的性能。

1 个答案:

答案 0 :(得分:3)

代码的问题在于:

ref = firebase.database().ref();
const events = ref.child('users').child('hakan');

事件针对这部分数据:

 users
   hakan
     sayilar: 5000
     status: "waiting"

然后你打电话

const query =events.orderByChild('status').equalTo('ok').limitToFirst(2);

其中hakan的孩子会通过他们的孩子status向其查询,这将返回null,因为hakan下的任何一个键都没有孩子status。 您似乎想将events更改为:

const events = ref.child('users')

然后,您可以通过他们的孩子status订购用户的孩子。