![](/img/trans.png)
[英]Vue.js: How to load a template asynchronously after I retrive data from firebase storage?
[英]How to produce data after getting firebase firestore in Vue.JS
我想显示从 firebase 到浏览器控制台的所有订单数据。 请看下面的图片
这是在cue.js中编写如下代码后从firebase获取的数据
orders(){
const db = firebase.firestore();
const dbOrderRef = db.collection('order');
dbOrderRef.get()
.then(res => {
res.forEach(doc => {
console.log(doc.data())
})
})
.catch(err => {
console.log('error', err)
})
}
我试图在下面喜欢这个
数据中的实例变量
ordersData = []
然后在方法中
this.ordersData = doc.data()
但没有运气。
我现在可以做什么来实现我的目标?
谢谢
如果我正确理解您的问题,您希望将从 Firestore 查询收到的所有订单分配给ordersData
数组。
以下应该可以解决问题:
const db = firebase.firestore();
const dbOrderRef = db.collection('order');
let orderArray = [];
dbOrderRef.get()
.then(res => {
res.forEach(doc => {
let orderObj = doc.data();
orderObj.id = doc.id;
orderArray.push(orderObj);
});
this.ordersData = orderArray;
})
.catch(err => {
console.log('error', err)
})
然后您可以在模板中显示ordersData
数组,如下所示,例如:
<div v-if="ordersData.length">
<div v-for="order in ordersData">
<h5>{{ order.name }}</h5>
<p>Price: {{ order.price }}</p>
<p>
<a @click="openOrderDetail(order.id)">Open order</a>
// Here we show how we can call an openOrderDetail() method passing the Firestore document id of the order.
// This would allow, for example to route to a page where you use the order id to query for the order document.
</p>
</div>
</div>
在使用then
,在 then 块中使用的这个关键字指的是块本身而不是 Vue 对象。 下面的解决方案应该作为 orders 函数工作,我们将 Vue 引用保存在另一个变量中,并使用该变量访问 ordersData。
let _this = this
const db = firebase.firestore();
const dbOrderRef = db.collection('order');
dbOrderRef.get()
.then(res => {
res.forEach(doc => {
_this.ordersData = doc.data();
console.log(_this.ordersData)
})
})
.catch(err => {
console.log('error', err)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.