【问题标题】:Fetching data with redux from firebase使用 redux 从 firebase 获取数据
【发布时间】:2020-11-04 20:58:18
【问题描述】:

我正在尝试使用 redux 从 Firebase 获取一些数据,并在材料表组件中通过反应显示它们。数据已收到,但在数据到达后我收到此错误:TypeError:无法读取未定义的属性“长度”。我认为在从firebase接收所有数据之前发送有效载荷。尽管如此,我仍在使用 await ,但我不明白我哪里出错了。

export const fetchReviews = () => async (dispatch) => {

const reviewsCollectionRef = db.collection('reviews');
let reviews = [];
 await reviewsCollectionRef .get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
    // doc.data() is never undefined for query doc snapshots
    // console.log(doc.id, " => ", doc.data());
    reviews.push(doc.data());
  
}); }).then(() =>   dispatch({
type: FETCH_DATA_FROM_FIREBASE,
payload: reviews
}));

【问题讨论】:

  • 我厌倦了@Praveen Dass 答案的代码,它按预期工作。也许问题是您的组件在尚未获取数据时正在访问数据。能否分享一下调用fetchReviews()方法的代码?

标签: javascript reactjs firebase redux google-cloud-firestore


【解决方案1】:

试试下面的代码:

export const fetchReviews = () => async (dispatch) => {
  let reviews = [];
  //perform asynchronous tasks
  await db.collection('reviews').get()
  .then((querySnapshot) => {
    querySnapshot.forEach(function(doc) {
      reviews.push(doc.data());
    })       
  });
  dispatch({
    type: FETCH_DATA_FROM_FIREBASE,
    payload: reviews
  });
}

【讨论】:

  • 我在组件内实际呈现之前收到错误。当记录器尝试记录有效负载时会触发错误。
  • 不幸的是同样的结果。
  • 这个问题是由我在尝试将组件连接到 redux 存储时犯的错误引起的。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多