状況は:あるノードから別のノードにchildNodeをコピーするにはどうすればよいですか?
私は他のノードに)それをchildNodeが、その後、(設定をダウンロードする必要があります。
問題がchildNodeがのスコア属性が100
と投稿は100以上のスコアを持っているとどのように私は新しいインデックスにそれらをコピーする場合、私は確認する必要がありますに達すると、私はこれだけをしたいです一度?
私が考えたもの:ポストがロードされると
、それのスコアを確認してください。それが> 100ならば、データベースにチェックインしてください。次に、ノードを新しい索引にプッシュします。
問題:
がどのように私はポストは複数の負荷にそれのスコアである> = 100がロードされるたびにアップロードされてからノードを防ぐでしょうか?私はそれが一度だけ起こる必要があります!
ソリューションコード:
if (funPost.score >= global.hotNumber && funPost.hot == false) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
var hotPost = {
title: funPost.title,
image: funPost.image,
id: funPost.id,
key: funPost.key
}
hotPostRef.set(hotPost);
funPostRef.update({"hot": true});
}
else if (funPost.score <= (global.hotNumber - 25) && funPost.hot == true) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
hotPostRef.remove();
funPostRef.update({"hot": false});
}
ソリューション:私はブールフラグを使用して終了。
データを読み込んでいるときに '> = 100'インデックスを作成しているようです。これには理由がありますか?データの作成時に索引作成を検討しましたか?あなたができない理由はありますか?これは比較的単純です。 – cartant
スコアを含むノードにオブザーバーを追加すると、更新時にアプリに通知されます。だからそれがあなたのアプリに通知するとき、それが100かどうかをチェックし、もしそうなら、ノードをダウンロードし、スコアを0にしてコピーを実行します。それがワンショット契約の場合、あなたはアプリにノード/ should_observeを含む設定ノードをチェックさせることができます:true、それが真である場合のみスコアノードを観察し、falseの場合はオブザーバを追加しないでください。しかし、ノード全体をダウンロードして書き直すのは残酷なようです。どうしてそんなことをするのか? – Jay
@Jay res.render()を見ると、次のページの情報を表示するために投稿全体を渡しています。しかし、すべて正常です:私はブール値のフラグを使用して終了しました。今夜私のコードを投稿します。 – Coder1000