【问题标题】:Not Retrieved React Native Firestore Subcollection未检索到 React Native Firestore 子集合
【发布时间】:2018-03-19 13:07:01
【问题描述】:

我想获取子集合时遇到问题。 有人可以帮我吗?

firestore 结构:

questions(collection) ->  curretUser.id(doc) -> questions(collection) -> questionIDautoCreated(doc)-> {title: "", description: "" }

我尝试获取数据:

return (dispatch) => {
  firebase.firestore().collection('questions').doc(currentUser.uid)
  .collection('questions').get()
  .then((documentSnapshot) => {
    const value = documentSnapshot.data();
    console.log('Value Succeed : ');
    console.log(value);
  });
};

错误:

可能的未处理承诺拒绝 (id:0) 类型错误:documentSnapshot.data 不是函数

谢谢

【问题讨论】:

  • 对不起@Cœur :(谢谢你的通知

标签: javascript react-native google-cloud-firestore


【解决方案1】:

因为集合不是DocumentSnapshot,它是QuerySnapshot。 Collection 包含一个数据列表,它不是一个实际的文档。 如果您查看 Firestore 文档 here。可以看到查询集合时,应该:

querySnapshot.forEach(function(doc) {
    console.log(doc.id, " => ", doc.data());
});

例外说明一切,你收到的不是你期望的。

return (dispatch) => {
  firebase.firestore().collection('questions').doc(currentUser.uid)
   .collection('questions').get()
   .then((querySnapshot) => {
     querySnapshot.forEach((doc) => {
       console.log(doc.id, " => ", doc.data());
     });
   });
 };

【讨论】:

    【解决方案2】:

    你可以得到这样的子集合,

    Collections 返回 docs 数组,您必须先访问 docs 数据。 快速示例

    firebase.firestore().collection('...').get().then(s => console.log(s.docs))
    

    您的解决方案

    return (dispatch) => {
        firebase.firestore().collection(`questions/${currentUser.id}/questions`)
          .get()
          .then(questionSnapshot => questionSnapshot.docs)
          .then(questions => {
            questions.forEach(question => {
              console.log(question)
            })
          })
      }
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2020-09-01
      • 2018-07-07
      • 1970-01-01
      • 2021-06-05
      • 2023-02-26
      • 2020-11-30
      • 2019-02-05
      • 2018-12-13
      相关资源
      最近更新 更多