ユーザーが値でレコードを検索できるようにしたいが、すべてのレコードをリストすることはできない。Firebaseデータベース:インデックスアクセスのない値で検索する
たとえば、私はwikiを作成したいが、いくつかのページは直接URLでしかアクセスできないようにしたい。
私はレコードレベルで読み取りアクセス権を与えることができ、ユーザーはすべてのキーを読み取ることができないことがわかっていますが、私は/
その他の文字。
だから私は物のパスをpath
のプロパティに保存してから、path
で物を探します。
// database structure
things
-KNi4OQXGXsHKYHVuTln
path: "should/not/be/listed/anywhere"
私は、ユーザーがパスを知っている場合にのみ、その物を見つけるようにしたいと考えています。
// 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()"
}
}
}
}
とその効果を
は、問題は、私が唯一orderByChild
とequalTo
で/things
を検索してものを見つけることができますです誰もが私が持っているすべてのものを見ることができます。それを避ける方法はありますか?
もしそうでなければ、私はプロパティ値で見つけたらすぐにFirebaseが私のすべてのものを公開するように強制しますか?
ありがとうフランク。よりシンプルなプロジェクトのためのサーバーの作成と保守を避けることを望んでいました。 – Yura