从Firebase(Vue)提取一个文档

时间:2018-11-03 20:43:18

标签: firebase vue.js vuejs2 google-cloud-firestore

我正在尝试根据路由参数(id)从Firebase提取特定文档,在该路由参数中,我使用自动生成的Firebase ID来检索文档。

但是,没有任何数据被返回。

使用when()方法,我想检索具有与查询匹配的自动生成ID的特定文档...我正在使用(“ id”,“ ==”,$ this.route。 params.id)...引用自动生成的ID时,“ id”是正确的语法吗?

Here is a screenshot of the simple database I have set up...

稍后我将要操作UI,现在,我只是将其保存在模板中...

<template>
 <div>
  <h1>{{ huddle.goal }}</h1>
  <h1>{{ huddle.headline }}</h1>
  <h1>{{ huddle.body }}</h1>
 </div>
</template>

然后我将其保存在脚本中...

<script>
import db from "./firebaseInit"
export default {
  name: "HuddleSpace",
  data() {
    return {
      id: this.$route.params,
    }
  },
  created() {
    this.fetchData()
  },
  watch: {
    "$route": "fetchData"
  },
  methods: {  
    fetchData() {
      db.collection("huddle").where("id", "==", 
       this.$route.params.id).get().then(querySnapshot => {
        querySnapshot.forEach(doc => {
         const huddle = {
            goal: doc.data().goal,
            headline: doc.data().headline,
            body: doc.data().body
          }
        })
      })
    }
  },
}
</script>

我不打算使用Vue Router文档来获取“导航后获取数据”的信息,也不会使用Firebase文档来获取数据的信息/ YouTube上的一些视频,所以我不确定逻辑是否合理。

2 个答案:

答案 0 :(得分:0)

您的问题来自以下事实:您的huddle对象未包含在data对象中,因此未将其添加到“ Vue的反应系统”中。有关更多详细信息,请参见https://vuejs.org/v2/guide/instance.html#Data-and-Methods

您应该执行以下操作:

<script>
import db from "./firebaseInit"
export default {
  name: "HuddleSpace",
  data() {
    return {
      id: this.$route.params.id,
      huddle: {}
    }
  },
  created() {
    this.fetchData()
  },
  watch: {
    "$route": "fetchData"
  },
  methods: {  
    fetchData() {
      db.collection("huddle").where("id", "==", 
       this.$route.params.id).get().then(querySnapshot => {
        querySnapshot.forEach(doc => {
         this.huddle = {
            goal: doc.data().goal,
            headline: doc.data().headline,
            body: doc.data().body
          }
        })
      })
    }
  },
}
</script>

答案 1 :(得分:0)

您无需进行查询, 您要处理的ID是文档ID,因此请使用=>

private static IDbConnection GetConnection(IConfigHelper config)
        {
            var factory = DbProviderFactories.GetFactory("System.Data.SqlClient");

            var connection = factory.CreateConnection();
            connection.ConnectionString = config.ConnectionString;
            connection.Open();

            return connection;
        }

// where(“ id”,“ ==”,$ this.route.params.id)=>这将查询以获取具有指定值($ this.route)的字段名称(id)的文档。 params.id)