「なぜ高度なクエリを実行できないのですか?」というGoogleの回答
これは安価な切り抜きのように見えるかもしれませんが、考えられるのはfirebaseがおそらくリアルタイムであるため、データをクエリする必要があるからです。可能な限り速く、高度なクエリを提供するのに十分な時間/リソースがない可能性があります。これは単にあなたが消費するためにもっと多くのサーバーリソースを単に割り当てることができないため、Googleの視点からは理にかなっています。 Googleの心の中では、「必要なときにすべてのデータを提供します。一貫性を持たせ、必要なものをすべて実行します。」
このため、ノードのバックエンドはサーバープロキシでは、firebaseから実際のデータを取得し、そのデータに対して高度なクエリを実行し、照会されたデータをクライアントに返します。あるいは、サーバーレスで直接クライアント上で実行することもできますが、これは前述のとおり、その機密性の高いデータで常に安全であるとは限りません。
基本的に、照会されていないデータを回避することはできませんが、照会されていないデータは最小限に抑えることができます。これは、データを再構築することで実現できます。
アドバイスGoogleはあなたがある与え、
構造データあなたの意見によると - Firebase、Googleの
これが意味することについての情報を表示するビューを持っていた場合、と言うことです請求書。あなたはSQLから来ている場合は伝統的に、あなたは何をしたいのかグーグル何か
このような
+ invoice
+ i01
+ date: xxx
+ customer: xxx
+ invoice_items
+ ii01
+ invoice: i01
+ product: p
+ qty: 1
...
を設計したい
+ invoice
+ i01
+ date: xxx
+ customer: xxx
+ items: [
{
+ product: p
+ qty: 1
}]
...
この方法、あなたは何をするのニーズ」をしないことですビューのために必要なすべてのデータが既に存在するため、高度なクエリです。
これは考えてみると、データベースの状態が遅かれ早かれ不一致の状態に陥るだけで、あなたが正しいと思うので、時にはそのようになるかもしれません。しかし、Firebaseは、multipath updatesのような対策を提供しています。
希望します。
曖昧な質問です。あなたの '高度なクエリ'と私の定義は非常に異なる可能性があります。具体的な例を示し、コードとFirebaseの構造を示してください。また、[How to Ask](http://stackoverflow.com/help/how-to-ask)も参照してください。あなたの質問を更新し、私たちは助けてください! – Jay