如何将Firebase Firestore连接到Redux

问题描述 投票:1回答:2

我在从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;
reactjs firebase redux google-cloud-firestore react-redux
2个回答
0
投票

您可以附加另一个.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)的数据,例如>


-1
投票

应该是

© www.soinside.com 2019 - 2024. All rights reserved.