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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

Q&A

解決済

1回答

1382閲覧

キャッシュを無視してリロードをさせたい

TMTN

総合スコア53

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

0グッド

0クリップ

投稿2021/06/02 15:35

#Vueにてキャッシュを無視してリロードをさせたい

post.vueにて投稿内容を追加して、board.bueにてpostデータを取得して表示させています。

post.vue内にpostItem()というボタンを設置して、postItem()を押下されたらFirestoreへデータを追加し、
Firestoreに保存後、「投稿しますか?」というアラートを表示して、「ok」が押下されたら
以下コードでリロードをさせて、新しく投稿されたpostをboard.vueに表示させたいのですが、
現状前のキャッシュ参照して表示してしまっていう為か新しく投稿したpostがboard内に表示されない状況です。

this.$router.go({ path: `/board/${this.uid}`, force: true });

ちなみに上記のコードを削除して、手動でリロードをかけると新しく投稿したpostはboardに表示されます。

キャッシュを無視してリロードさせて、boardに表示させるにはどのようにしたらよろしいでしょうか。

分かる方いらっしゃいましたらお力添えを頂きたいです。

宜しくお願い致します。

#post.vue

postItem() { const currentUser = firebase.auth().currentUser; this.uid = currentUser.uid; const id = firebase .firestore() .collection("posts") .doc().id; this.$swal({ title: "内容確認", text: "この内容で投稿しますか?", icon: "info", buttons: true, dangerMode: true, }).then((willDelete) => { if (willDelete) { firebase .firestore() .collection("posts") .add({ title: this.title, description: this.description, genre: this.genre, time: firebase.firestore.FieldValue.serverTimestamp(), id: id, uid: this.$route.params.uid, }); this.$swal("投稿しました。", { icon: "success", }); this.$router.go({ path: `/board/${this.uid}`, force: true }); } else { this.$swal("キャンセルしました。"); } }); },

#board.vue

export default { data() { return { ~ 省略 ~ allData: [], }; }, created() { // "posts"コレクションの全ドキュメントを取得。 firebase .firestore() .collection("posts") .orderBy("time", "desc") .get() .then((snapshot) => { snapshot.forEach((doc) => { this.allData.push({ ...doc.data(), id: doc.id }); console.log(this.allData); }); }); }.

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

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

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

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

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

FKM

2021/06/03 01:46

メソッドでないと画像はキャッシュを持ってしまうので入れ替わらないというのは有名な現象ですが、それと関係あるのでしょうかね。
TMTN

2021/06/03 11:55

コメントありがとうございます。 なんとか解決致しましたが、キャッシュは関係なかったようです・・ Firestoreに保存される前にリロードが動いていたことが原因でした。。
guest

回答1

0

自己解決

以下のコードのようにしたら解決致しました。

Firestoreに保存される前にリロードが動いていたことが原因でした。

postItem() { const currentUser = firebase.auth().currentUser; this.uid = currentUser.uid; const id = firebase .firestore() .collection("posts") .doc().id; //.doc().firebaseでコレクションの"posts"を参照して、「id」を取得 this.$swal({ title: "内容確認", text: "この内容で投稿しますか?", icon: "info", buttons: true, dangerMode: true, }) .then((willDelete) => { if (willDelete) { firebase .firestore() .collection("posts") .add({ title: this.title, description: this.description, genre: this.genre, time: firebase.firestore.FieldValue.serverTimestamp(), id: id, uid: this.$route.params.uid, }) .then(() => { this.$swal("投稿しました。", { icon: "success", }); this.$router.go({ path: `/board/${this.uid}`, force: true }); }) .catch(() => { console.log("err"); }); } else { this.$swal("キャンセルしました。"); } }) .catch(() => { this.$swal("投稿出来ませんでした。", { icon: "error", }); }); },

投稿2021/06/03 11:55

TMTN

総合スコア53

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問