Я хочу, чтобы пользователи находили запись по значению, но я не хочу, чтобы они могли перечислять все записи.База данных Firebase: найти по значению без доступа к индексу
Например, я хочу создать вики, и я хочу, чтобы некоторые страницы были доступны только по прямым URL-адресам.
Я знаю, что могу предоставить доступ на чтение на уровне записи, и пользователь не сможет прочитать все ключи, но тогда я ограничу только символы, разрешенные для ключа, в то время как я могу использовать /
и других персонажей.
Так что я бы сохранил путь вещи в его собственности path
, а затем ищите вещь path
;
// database structure
things
-KNi4OQXGXsHKYHVuTln
path: "should/not/be/listed/anywhere"
Я хочу, чтобы пользователь мог найти вещь, только если они знают путь.
Проблема в том, что я могу только найти вещь, с помощью функции поиска /things
с orderByChild
и equalTo
:
// 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