お世話になっております。
現在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に問題があると考えています。
進展があり次第、追記いたします。
あなたの回答
tips
プレビュー