我试图将一些触发的函数添加到我的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,根据您的安全规则获得更好的性能。
答案 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
订购用户的孩子。