私はNode.jsとFirebaseのクラウドファンクションが新しく、私は自分の質問に特化しようとします。クラウドファンクションHttpリクエストキャッシュされたFirebaseデータベースを返す
私は「スコア」フィールドを含むオブジェクトを持つfirebaseデータベースを持っています。私はそれに基づいてデータを取得したい、それは簡単にクライアント側で行うことができます。
問題は、データベースが大きくなると、返すには時間がかかりすぎるか、多くのリソースを消費するかが心配です。だから私はクラウド機能を使ってhttpサービスを考えていたので、オブジェクトのスコアがリスナーによって変わったときに更新される上位N個のオブジェクトを持つキャッシュを保存します。
次に、クライアント側は、上位NレベルのJsonを受け取るために、https://myexampleprojectroute/givemethetoplevelsのようなものを呼び出すだけです。
これは妥当ですか?もしそうなら、私はそれにどのようにアプローチできますか?このキャッシュを使用するにはどの構造体が必要ですか?また、httpでjson形式で返す方法は?
私はそれをクライアント側でやっていきますが、私はパフォーマンスと学習目的の両方でそれを本当にしたいと思います。
ありがとうございます。
EDIT:
最後に私は最適化を実装していませんでした。その理由は、最初に、firebaseデータベースに "子カウント"が含まれていないため、私は初心者のjavascript知識を使ってその方法を見つけられませんでした。 2番目に、そして最も重要なのは、私はそれが最大10Kのエントリを持ち、数百万にスケールアップされないと確信しています。そして、firebaseはソートされた読み込み最適化のルールを持っています。詳細については、またthis link.
をチェックしてみてください、私は誰かがそれを探している場合にはクラウドの機能を使用してHTTP要求を介してデータベースからデータを取得するための簡単なコードスニペットを投稿します。お役に立てれば!
// Simple Test function to retrieve a json object from the DB
// Warning: No security methods are being used such authentication, request methods, etc
exports.request_all_levels = functions.https.onRequest((req, res) => {
const ref = admin.database().ref('CustomLevels');
ref.once('value').then(function(snapshot) {
res.status(200).send(JSON.stringify(snapshot.val()));
});
});
ありがとうございました!だから代わりのjs構造を使用する代わりに、私はちょうどデータベースの別のパスでトップXを複製します。私はこれを試してみよう!私はそれが完了したら投稿を更新します! – Carles