我在从Firebase Firestore检索数据时遇到问题尽管我已将产品分配给list_product变量,但是当console.log时,它为空。我认为这是js的异步机制,但我不知道如何解决...
import * as types from '../constants/ActionType'
import { firebaseApp } from '../constants/firebaseConfig'
import "@firebase/firestore"
var list_product = []
var db = firebaseApp.firestore()
db.collection("product").get()
.then(snapshot => {
snapshot.forEach(doc => {
list_product.push(doc.data())
})
console.log(list_product)
})
var initialState = list_product
var myReducer = (state = initialState, action) => {
switch (action.types) {
case types.LIST_ALL_PRODUCT:
return [...state];
case types.SHOW_INFO_DETAIL_PRODUCT:
return [...state];
default:
return [...state];
}
}
export default myReducer;
您可以附加另一个.then()
以在第一个.then()
完成后执行操作
db.collection("product").get().then((querySnapshot) => {
querySnapshot.forEach((document) => {
list_product.push(document.data())
});
}).then(() => {
console.log(list_product)
});
您也可以使用Promise:
var bar = new Promise((resolve, reject) => {
db.collection("product").get().then((querySnapshot) => {
querySnapshot.forEach((document) => {
list_product.push(document.data())
});
resolve("All Good")
});
});
bar.then(() => {
console.log(list_product)
});
如果仍然没有数据,请检查查询是否返回带有console.log(querySnapshot.empty)
的数据,例如>
应该是