我正在尝试根据路由参数(id)从Firebase提取特定文档,在该路由参数中,我使用自动生成的Firebase ID来检索文档。
但是,没有任何数据被返回。
使用when()方法,我想检索具有与查询匹配的自动生成ID的特定文档...我正在使用(“ id”,“ ==”,$ this.route。 params.id)...引用自动生成的ID时,“ id”是正确的语法吗?
稍后我将要操作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上的一些视频,所以我不确定逻辑是否合理。
答案 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)