Javascript Firestore部署后未反映Firestore中的更改
我有一个使用Firebase托管、Firestore、身份验证和存储的web应用程序 它是一个简单的博客布局,拥有博客帖子的所有常用功能。它松散地基于和 在开发环境中,它运行得很好,但当我部署它时,Firestore的行为出乎意料 因此,在部署项目后,我可以在Firebase控制台Firestore viewer中按预期对反映的文档进行CRUD,但当我再次读取数据时,它将加载相同的数据。换句话说,如果我删除一个文档,它将在Firestore查看器中消失,但当我刷新我的NUXT网站时,它会再次加载该文档,即使它不再出现在Firebase控制台中。我在不同的计算机/设备上得到相同的结果,因此不是本地缓存问题 我注意到Firestore查看器中的更改只会在我重新部署项目后反映在我的网站上。但在刷新网站后,我所做的任何更改都不会显示,即使它们在Firestore viewer中已永久更改 在开发过程中,它可以完美地工作,我可以操作数据库,刷新,它将加载Firestore viewer中反映的内容 抱歉重复了这么多,但我这里有一个生存危机,哈哈 下面是NUXT商店的Javascript Firestore部署后未反映Firestore中的更改,javascript,firebase,google-cloud-firestore,nuxt.js,firebase-hosting,Javascript,Firebase,Google Cloud Firestore,Nuxt.js,Firebase Hosting,我有一个使用Firebase托管、Firestore、身份验证和存储的web应用程序 它是一个简单的博客布局,拥有博客帖子的所有常用功能。它松散地基于和 在开发环境中,它运行得很好,但当我部署它时,Firestore的行为出乎意料 因此,在部署项目后,我可以在Firebase控制台Firestore viewer中按预期对反映的文档进行CRUD,但当我再次读取数据时,它将加载相同的数据。换句话说,如果我删除一个文档,它将在Firestore查看器中消失,但当我刷新我的NUXT网站时,它会再次加载
index.js
文件的一个示例,您可以在其中存储应用程序的所有数据。它可以完美地处理Firestore上的数据,但一旦投入生产,网站就会一次又一次地获得相同的数据
import { firestore } from '~/plugins/fireinit.js' // the part where `firebase.initializeApp` happens
取消我的数组状态:posts
export const state = () => ({
posts: []
})
操作posts数组的方法
export const mutations = {
addP (state, payload) { // Gets run for each documents from collection on first load.
state.posts.push(payload);
},
delP (state, payload) { // Deletes a post from the posts state.
state.posts = state.posts.filter(p => {
return p.id != payload.id;
});
},
}
nuxtServerInit()
在服务器上运行,以便在网站首次加载时呈现服务器端
export const actions = {
async nuxtServerInit({commit}, context) {
await firestore.collection('posts').get().then((querySnapshot) => {
querySnapshot.forEach(function(doc) {
var obj = doc.data()
obj.id = doc.id;
commit('posts/addP', obj)
})
})
},
deletePost()
操作删除Firebase存储上的文件,然后删除Firestore上的文档。然后最后从posts状态中删除该项
deletePost ({commit}, payload) {
storage.ref().child(payload.fullPath).delete().then(function() {
firestore.collection('posts').doc(payload.id).delete().then(()=>{
commit('delP', payload);
})
.catch((error)=>{
console.error(error);
});
})
}
}
这就是我的Firestore规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth != null;
}
}
}
我做错了什么:/所以在掉了一些头发后,我终于明白了 因此,在NUXT中,部署项目有两个选项,
NUXT build
或NUXT generate
generate
选项读取数据库,然后从firestore构建静态文件,然后部署firestore。这就是为什么当我重新加载我的页面时,它将所有旧的内容都放在数据库中
在切换到
build
选项并部署它之后,一切都很好。所以在掉了一些头发之后,我终于找到了答案
因此,在NUXT中,部署项目有两个选项,NUXT build
或NUXT generate
generate
选项读取数据库,然后从firestore构建静态文件,然后部署firestore。这就是为什么当我重新加载我的页面时,它将所有旧的内容都放在数据库中
在切换到build
选项并部署该选项后,一切都能完美工作