gpt4 book ai didi

firebase - "error": "Index not defined, add ". 索引打开”

转载 作者:行者123 更新时间:2023-12-01 19:54:52 25 4
gpt4 key购买 nike

我在 Firebase 中创建了一个数据库,如下所示:

database structure

现在我进入 REST 客户端并发出此查询:

https://movielens3.firebaseio.com/movieLens/users.json?orderBy="age"&startAt=25&print=pretty

它给了我一个错误:

"error": "Index not defined, add ".indexOn": "age", for path "/movieLens/users", to the rules"

所以我进入规则部分并定义此规则:

{
"rules": {
"users" : {
".indexOn": ["age", "gender", "occupation", "zipCode"]
},
".read": true,
".write": true
}
}

但我仍然遇到同样的错误。

最佳答案

您正在为 /users 定义索引。树的根下没有子节点users,因此这些索引将为空。

由于您查询 /movieLens/users,这正是必须定义索引的位置:

{
"rules": {
"movieLens": {
"users" : {
".indexOn": ["age", "gender", "occupation", "zipCode"]
},
".read": true,
".write": true
}
}
}

评论中问题的更新:

您将用户的年龄存储为字符串,因此无法将其作为数字进行过滤。解决方案是修复您的数据并将其存储为数字。

但与此同时,这个查询有点有效:

https://movielens3.firebaseio.com/movieLens/users.json?orderBy="age"&equalTo="35"

在 JavaScript 中:

ref
.orderByChild('age')
.startAt('35')
.limitToFirst(3)
.once('value', function(s) {
console.log(JSON.stringify(s.val(), null, ' '));
}, function(error) {
if(error) console.error(error);
})

“某种程度上”是指它进行词法排序,而不是数字排序。修复数据以获得真正的解决方案。

请注意,您还忽略了 Firebase guidance on structuring data将数据存储为数组。这已经在 REST API 中给我带来了问题,这就是我删除 print=pretty 的原因。我强烈建议您阅读 Firebase programming guide for JavaScript developers从头到尾并遵循其中的建议。现在花费的几个小时将防止以后出现许多小时的问题。

关于firebase - "error": "Index not defined, add ". 索引打开”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34968413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com