我想让用户按值查找记录,但我不希望他们能够列出所有记录。Firebase数据库:按值查找没有索引访问
例如,我想创建一个wiki,并且我希望某些页面只能通过直接URL访问。
我知道我可以给记录级别上的读取权限,并且用户将无法读取所有密钥,但是然后我仅限于允许一个密钥的字符,而我可能想使用/
和其他角色。
所以我会存储一个东西的路径在它的path
属性,然后找到path
的东西;
// database structure
things
-KNi4OQXGXsHKYHVuTln
path: "should/not/be/listed/anywhere"
我想让用户只有在他们知道路径时才能找到它。
的问题是,我只能用orderByChild
和equalTo
搜索/things
找到的东西:
// request with javascript
firebase.database()
.ref('/things').orderByChild('path')
.equalTo("should/not/be/listed/anywhere")
.once('value', s=>{ });
这意味着我将不得不放弃读访问/things
:
// database security rules
{
"rules": {
"things": {
".read": true,
".indexOn": ["path"],
"$thingId": {
".validate": "newData.hasChildren(['path']) && newData.child('path').isString()"
}
}
}
}
和有效让任何人都能看到我拥有的所有东西。有没有办法避免这种情况?
如果不是,那么这是否意味着Firebase迫使我尽快公布我所有的信息?
谢谢弗兰克。我希望避免为更简单的项目创建和维护服务器。 – Yura