Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firestore部署后未反映Firestore中的更改_Javascript_Firebase_Google Cloud Firestore_Nuxt.js_Firebase Hosting - Fatal编程技术网

Javascript Firestore部署后未反映Firestore中的更改

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网站时,它会再次加载

我有一个使用Firebase托管、Firestore、身份验证和存储的web应用程序

它是一个简单的博客布局,拥有博客帖子的所有常用功能。它松散地基于和

在开发环境中,它运行得很好,但当我部署它时,Firestore的行为出乎意料

因此,在部署项目后,我可以在Firebase控制台Firestore viewer中按预期对反映的文档进行CRUD,但当我再次读取数据时,它将加载相同的数据。换句话说,如果我删除一个文档,它将在Firestore查看器中消失,但当我刷新我的NUXT网站时,它会再次加载该文档,即使它不再出现在Firebase控制台中。我在不同的计算机/设备上得到相同的结果,因此不是本地缓存问题

我注意到Firestore查看器中的更改只会在我重新部署项目后反映在我的网站上。但在刷新网站后,我所做的任何更改都不会显示,即使它们在Firestore viewer中已永久更改

在开发过程中,它可以完美地工作,我可以操作数据库,刷新,它将加载Firestore viewer中反映的内容

抱歉重复了这么多,但我这里有一个生存危机,哈哈

下面是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
选项并部署该选项后,一切都能完美工作