ストックドッグスマートフォン用の表示で見るストックドッグKatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。databaseの公式ドキュにはガッツリ書かれていますが、備忘を兼ねて記事に。Web周り詳しくないので記事レベルはあしからず。databaseのデータ取得のときに.on('value')で取得するべきか、.on('child_added')で取得するべきか、悩むときがありますね。そんなときにどう使い分けるかの記事です。.on('value')で取得するサンプルコードはこんな感じ。snapshot.val())}).on('child_added')で取得するサンプルコードはこんな感じ。snapshot.val())})公式に全部書いてあるので、正直、この記事の存在価値は皆無ですが、あくまでも備忘なので!!大別すると...valuechild_addedこの2つになります。childはchangedとかありますが、根本的にvalueとchild_addedは取得方法が異なります。valuevalueは、指定されたノード全体のキャプチャを取得します。以下のノードがあれば、これをまるっと取得してきます。snapshot.val())})そのため、valueの返り値は指定したノード全体、ということになります。child_addedchild_addedは、指定されたノードの子ノードを取得してきます。以下のノードは、子ノードを5つ持っており、これらを取得します。0.9033302588248819}が返り値になっている理由は子ノードを取得しているからです。子ノードを取得してくるため、子ノードが5つあれば5回実行されることになります。この挙動でよくミスるのが、以下のコードを書いたときです。.onではなく、once()で書いています。snapshot.val())}).onceは1回しか実行されないので、1つ子ノードを取得して、終了です。ノード全体を取得したいときは、このコードじゃ動きません。子ノードの追加をリッスンしたいのがchild_addedなので、.onceを使うなら用途に反してますよってことです。.on()と.once()の違いは、この記事。www.stockdog.work子ノードに変更があった場合の.on('value')と.on('child_added')の違い.on('value')は、ノード全体を取得してきます。.on('child_added')は変更分だけ取得してきます。返り値で見ると、以下になります。1回目は、ノード全体をvalueもchild_addedも取得します。データの変更があった2回目は取得内容に差があります。※warningは気にしないでね、サンプルコードのたびにindex加えてられるかいまとめ.onで変更を監視したいときは、child_addedじゃないとデータ取得の容量が増えてしまいます。(27)注目記事プロフィール金融系の会社で働くSEが株やPython、その他諸々について書いています。読者になるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。