Работа с документами Firestore и сбор данных - PullRequest
2 голосов
/ 21 июня 2019

У меня есть несколько документов со следующей структурой коллекции в Firestore.

_fl_meta_: Object { createdBy: "Kz5vTvzlmGhRCxqKuDhrvvANqPe2", docId: "76qlSYWItERvJVnLKSDt", env: "production", … }
author: "asd"
content: "last 1"
date: "2019-06-19T12:00:00-07:00"
id: "76qlSYWItERvJVnLKSDt"
imageDeck: Array [ {…} ]
order: 0
parentId: 0
status: "published"
summary: "last 1"
title: "last 1"

Я пытаюсь пройти через мои документы и передать данные своей коллекции моим компонентам, но у меня возникают проблемы.

my query

const db = firebase.firestore();
db
  .collection('fl_content')
  .where('_fl_meta_.schema', '==', 'blog')
  .get()
  .then(querySnapshot => {
    querySnapshot.forEach(doc => {
      console.log(doc.data());
      // let results = Object.keys(doc.data()).map(function (key) {
      //   return [String(key), doc.data()[key]];
      // })
      // this.setState({ cards: results });
    });
  })
  .catch(error => {
    console.log("Error getting documents: ", error);
  });

, который запрос выводит вышеупомянутую коллекцию из firestore.спасибо за помощь

1 Ответ

1 голос
/ 21 июня 2019

Получите querySnapshot и сопоставьте его с массивом объектов, содержащих ваши документы.

const querySnapshot = firebase.firestore().collection('fl_content')
  .where('_fl_meta_.schema', '==', 'blog').get()

.then((querySnapshot) => {
  // The following line will result in an array of objects (each object is your document data)
  const yourDocuments = querySnapshot.docs.map((doc) => doc.data());
  this.setState({cards: yourDocuments});
})
.catch((error) => {
  console.log(error);
});

Затем вы можете сделать что-то вроде:

// INSIDE YOUR RENDER METHOD

const cardItems = this.state.cards.map((item,index) => 
  <CardComponent key={index}>
     {item.name} // Here you can access and display the fields of your documents
  </CardComponent>
);

return(
  <SomeContainerComponent>
     {cardItems}
  </SomeContainerComponent>
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...