質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

645閲覧

【Firebase】データ更新処理child_changedについての質問

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/02/09 02:24

編集2021/02/09 02:45

お世話になっております。
現在Firebaseを用いて、バックエンドを記述しております。

●実現したいこと
購入キャンセルボタン
購入履歴ページから「購入キャンセル」を押すと、リアルタイムで商品を削除したい。

●現状起こっているエラー
購入キャンセルを押したとき、Firebase側にはデータの削除が反映されるものの、購入履歴ページからリアルタイムで商品が削除されない。
現在の挙動

●質問内容
まずページが作られる前のcreated()の箇所に、以下のようにコーディングしました。

created() { const user = firebase.auth().currentUser; //初期のデータ取得 firebase .database() .ref("users") .child(user.uid + "/purchaseHistory/") .once("child_added", snapshot => { this.purchaseHistory = []; this.purchaseHistory.push(snapshot); }); //そのあとのリアルタイム削除処理 firebase .database() .ref("users") .child(user.uid + "/purchaseHistory/") .on("child_changed", snapshot => { this.purchaseHistory = []; this.purchaseHistory.push(snapshot); }); }

書いてある通りなのですが、まずは一度once('child_added')で子ノードを取得し、そのあと子ノードに変更があるたびにFirebaseを更新し、クライアント側にも同期処理を走らせるためにon('child_changed')を実行しています。
Firebaseを使った同期処理の自分なりのイメージ

Firebaseのデータ構造は以下の通りです。
Firebaseのデータ構造

しかし現在、上記の通り「購入キャンセル」しても購入履歴からリアルタイムで商品が削除されません。
なぜか分からず、質問させていただきました。
是非よろしくお願いいたします。

*2021/02/09 11:44 追記
いろいろ試した結果、どうやらchild_changedがトリガーされていないようです。
しかし初期データを取得するchild_addedが正常にトリガーされているため、Nuxt.jsに問題があると考えています。
進展があり次第、追記いたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問