web-dev-qa-db-ja.com

Firestoreの1つのコレクションからすべてのドキュメントを取得する

こんにちは私はjavascriptとreact-nativeから始めており、この問題を今から何時間も解明しようとしています。誰かが私にファイアーストアコレクションからすべてのドキュメントを取得する方法を説明できますか?

私はこれを試しています:

async getMarkers() {
  const events = await firebase.firestore().collection('events').get()
    .then(querySnapshot => {
      querySnapshot.docs.map(doc => {
        console.log('LOG 1', doc.data());
        return doc.data();
      });
    });
  console.log('LOG 2', events);
  return events;
}

ログ1はすべてのオブジェクトを(1つずつ)印刷しますが、ログ2は未定義です。なぜですか?

18
Vlt

他の答えの例は不必要に複雑です。クエリまたはコレクション内の各ドキュメントの生データオブジェクトを返すだけであれば、これはより簡単です。

async getMarker() {
    const snapshot = await firebase.firestore().collection('events').get()
    return snapshot.docs.map(doc => doc.data());
}
44
Doug Stevenson

私はそれをこのように動作させました:

async getMarkers() {
  const markers = [];
  await firebase.firestore().collection('events').get()
    .then(querySnapshot => {
      querySnapshot.docs.forEach(doc => {
      markers.Push(doc.data());
    });
  });
  return markers;
}
3
Vlt

応答にドキュメントのキーを含める必要がある場合、別の方法は次のとおりです。

async getMarker() {
    const snapshot = await firebase.firestore().collection('events').get()
    const documents = [];
    snapshot.forEach(doc => {
       const document = {[doc.id}: doc.data()};
       documents.Push(document);
    }
    return documents;
}
0
Rodrigo