问题描述
所以我有这样的数据:
pushNotifications {
-K - RwEgd541PIGNOXXUH: {
message: "Xiaoyu Hugh Hou bid at $900 on your task: New P..."
notifyId: "facebook:10100683829966199"
relatedTask: "-Jzl8XKaxGCv19nIOChm"
timestamp: 1443594566599
} - K - RwpcBlQa04VJT4Bwm: {
message: "Sam Feldt bid at $1100 on your task: New Post g..."
notifyId: "google:1043268349966197"
relatedTask: "-Jzl8XKaxGCv19nIOChm"
timestamp: 1443594721963
} - K - RwuM3 - 0 G0q9I96WHg: {
message: "Sam Feldt bid at $600 on your task: NO Firebase..."
notifyId: "facebook:10100683829966199"
relatedTask: "-JzTSk2TIlO46oVqJ1Nn"
timestamp: 1443594741347
}
}
在我的代码中,我需要将下面的最新通知发送到某个notifyId".代码如下:
In my code, I need to get the latest notification below to a certain "notifyId". Here is the code:
ref.child('pushNotifications')
.orderByChild("notifyId")
.limitToLast(1)
.on("child_added", function (snapshot) {
console.log("Found a new notification...");
sendPush(snapshot.val());
});
在我的 firebase 安全规则中,我有这个索引规则:
In my firebase security rule, I have this index rule:
"pushNotifications": {
".read": "auth != null",
".write": "auth != null",
"$pushId": {
".indexOn": ["notifyId", "timestamp"],
}
},
这是 Firebase 文档遵循的索引结构:docs
It is the index structure follow by the Firebase docs here: docs
但是当我运行代码时,控制台仍然记录
But when I run the code, the console still log
FIREBASE 警告:使用未指定的索引.考虑将/pushNotifications 中的 ".indexOn": "notifyId" 添加到您的安全规则中以获得更好的性能
FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "notifyId" at /pushNotifications to your security rules for better performance
这没有任何意义,因为我已经这样做了.请帮忙!
Which does not make any sense since I did that already. Please help!
推荐答案
你需要把 .indexOn
比你所做的高一级:
You need to put the .indexOn
one level higher than what you did:
"pushNotifications": {
".read": "auth != null",
".write": "auth != null",
".indexOn": ["notifyId", "timestamp"]
},
要进行比较,请始终查看 有关索引的 Firebase 文档,它使用这个 JSON 示例:
For comparison always look at the Firebase documentation on indexes, which uses this JSON example:
"dinosaurs": {
"lambeosaurus": {
"height" : 2.1,
"length" : 12.5,
"weight": 5000
},
"stegosaurus": {
"height" : 4,
"length" : 9,
"weight" : 2500
}
}
使用此索引规则:
{
"rules": {
"dinosaurs": {
".indexOn": ["height", "length"]
}
}
}
这篇关于为什么这个 Firebase “.indexOn"不行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2