Cloud Firestoreクエリで複数のドキュメントを結合する方法は?

サリデン

次の構造のCloudFirestoreDBがあります。

  • ユーザー
    • [uid]
      • 名前:「テストユーザー」
  • 投稿
    • [id]
      • 内容:「テスト投稿だけ」
      • タイムスタンプ:(2017年12月22日)
      • uid:[uid]

実際のDBにはさらに多くのデータが存在します。上記は、コレクション/ドキュメント/フィールドの構造を示しています。

Webアプリに投稿を表示しているビューがあり、投稿したユーザーの名前を表示したいと思います。以下のクエリを使用して投稿を取得しています。

let loadedPosts = {};
posts = db.collection('posts')
          .orderBy('timestamp', 'desc')
          .limit(3);
posts.get()
.then((docSnaps) => {
  const postDocs = docSnaps.docs;
  for (let i in postDocs) {
    loadedPosts[postDocs[i].id] = postDocs[i].data();
  }
});

// Render loadedPosts later

私がやりたいのは、投稿のuidフィールドに格納されているuidによってユーザーオブジェクトをクエリし、対応するloadedPostsオブジェクトにユーザーの名前フィールドを追加することです。一度に1つの投稿のみを読み込んでいた場合、これは問題ありません。クエリがオブジェクトとともに返されるのを待って、.then()関数内でユーザードキュメントに対して別のクエリを作成します。

ただし、一度に複数の投稿ドキュメントを取得しているため.get()、各投稿のuser/[uid]ドキュメントを呼び出し後、正しいユーザーを正しい投稿にマップする方法を理解するのに苦労しています

誰かがこの問題のエレガントな解決策を考えることができますか?

パルミジャーナ

私は1ユーザーのdoc呼び出しと、必要なposts呼び出しを行います。

let users = {} ;
let loadedPosts = {};
db.collection('users').get().then((results) => {
  results.forEach((doc) => {
    users[doc.id] = doc.data();
  });
  posts = db.collection('posts').orderBy('timestamp', 'desc').limit(3);
  posts.get().then((docSnaps) => {
    docSnaps.forEach((doc) => {
    loadedPosts[doc.id] = doc.data();
    loadedPosts[doc.id].userName = users[doc.data().uid].name;
  });
}); 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Cloud Firestoreで複数のドキュメントサブコレクションをクエリすることは可能ですか?

分類Dev

Cloud Firestore Swift:ドキュメントのクエリを削除する方法

分類Dev

Google Cloud関数:firestoreドキュメントを削除し、SQLクエリの結果を挿入するとタイムアウトになります

分類Dev

FlutterのFirestoreから単一のドキュメントをクエリする(cloud_firestoreプラグイン)

分類Dev

Cloud FireStore:クエリで1つのドキュメントを取得

分類Dev

Cloud Firestoreを使用してコレクション内のドキュメント数を取得する方法

分類Dev

ユーザーUIDである同じiDを持つCloud FireStore複数のドキュメント

分類Dev

Firebase Cloud Functions(Firestore)でドキュメントIDを取得する

分類Dev

Cloud Firestoreトランザクションで、ドキュメント名がわからない場合に、特定のコレクションにドキュメントが存在するかどうかを確認する方法

分類Dev

Cloud Firestoreのサブコレクションでドキュメントのフィールド値をクエリして取得できますか?

分類Dev

Cloud Functions:Firestoreコレクションを新しいドキュメントにコピーする方法は?

分類Dev

Cloud Firestore:クエリでドキュメントが見つかりませんが、ドキュメントは存在します

分類Dev

Firestore Cloud Functionですべてのドキュメントを取得することは可能ですか?

分類Dev

Firestoreで複数のドキュメントを結合する方法は?

分類Dev

Firebase / Google Cloud Firestoreのコレクションに追加された最新のドキュメントを取得するにはどうすればよいですか?

分類Dev

Firebase Cloudドキュメントのフィールド内で複数の値を検索するにはどうすればよいですか?

分類Dev

Cloud_Firestoreから変数に単一のドキュメントデータを取得するにはどうすればよいですか?

分類Dev

Firebase Cloud Firestoreデータベースで利用可能なコレクションのドキュメントIDを取得することは可能ですか?

分類Dev

documentSnapshotからCloud Firestoreドキュメント参照を取得する

分類Dev

Cloud Firestore:ドキュメントを整理する

分類Dev

Firebase Cloud Firestore、JavaScriptを使用して4つのドキュメントのみを受け取る方法は?

分類Dev

Cloud Firestore:ドキュメントのフィールドをnullに設定する方法

分類Dev

Cloud Firestoreで、明示的なドキュメントIDを持つドキュメントを追加するにはどうすればよいですか?

分類Dev

Cloud Functions:CloudStorageから複数のドキュメントを圧縮します

分類Dev

Cloud Firestore-Python-adminSDKでストリーミングされたドキュメントでローカルタイムゾーンを取得する方法

分類Dev

Cloud Firestore:異なるクエリに関する同じドキュメント。個別の読み取りとして課金されますか?

分類Dev

Flutter:cloud_firestoreを使用してドキュメントからコレクションを取得するにはどうすればよいですか?

分類Dev

Cloud Functionsを使用してFirestoreコレクション内のすべてのドキュメントに書き込む方法は?

分類Dev

文字列を含む配列でドキュメントを取得するにはどうすればよいですか?Cloud Firestore&Cloud Functions

Related 関連記事

  1. 1

    Cloud Firestoreで複数のドキュメントサブコレクションをクエリすることは可能ですか?

  2. 2

    Cloud Firestore Swift:ドキュメントのクエリを削除する方法

  3. 3

    Google Cloud関数:firestoreドキュメントを削除し、SQLクエリの結果を挿入するとタイムアウトになります

  4. 4

    FlutterのFirestoreから単一のドキュメントをクエリする(cloud_firestoreプラグイン)

  5. 5

    Cloud FireStore:クエリで1つのドキュメントを取得

  6. 6

    Cloud Firestoreを使用してコレクション内のドキュメント数を取得する方法

  7. 7

    ユーザーUIDである同じiDを持つCloud FireStore複数のドキュメント

  8. 8

    Firebase Cloud Functions(Firestore)でドキュメントIDを取得する

  9. 9

    Cloud Firestoreトランザクションで、ドキュメント名がわからない場合に、特定のコレクションにドキュメントが存在するかどうかを確認する方法

  10. 10

    Cloud Firestoreのサブコレクションでドキュメントのフィールド値をクエリして取得できますか?

  11. 11

    Cloud Functions:Firestoreコレクションを新しいドキュメントにコピーする方法は?

  12. 12

    Cloud Firestore:クエリでドキュメントが見つかりませんが、ドキュメントは存在します

  13. 13

    Firestore Cloud Functionですべてのドキュメントを取得することは可能ですか?

  14. 14

    Firestoreで複数のドキュメントを結合する方法は?

  15. 15

    Firebase / Google Cloud Firestoreのコレクションに追加された最新のドキュメントを取得するにはどうすればよいですか?

  16. 16

    Firebase Cloudドキュメントのフィールド内で複数の値を検索するにはどうすればよいですか?

  17. 17

    Cloud_Firestoreから変数に単一のドキュメントデータを取得するにはどうすればよいですか?

  18. 18

    Firebase Cloud Firestoreデータベースで利用可能なコレクションのドキュメントIDを取得することは可能ですか?

  19. 19

    documentSnapshotからCloud Firestoreドキュメント参照を取得する

  20. 20

    Cloud Firestore:ドキュメントを整理する

  21. 21

    Firebase Cloud Firestore、JavaScriptを使用して4つのドキュメントのみを受け取る方法は?

  22. 22

    Cloud Firestore:ドキュメントのフィールドをnullに設定する方法

  23. 23

    Cloud Firestoreで、明示的なドキュメントIDを持つドキュメントを追加するにはどうすればよいですか?

  24. 24

    Cloud Functions:CloudStorageから複数のドキュメントを圧縮します

  25. 25

    Cloud Firestore-Python-adminSDKでストリーミングされたドキュメントでローカルタイムゾーンを取得する方法

  26. 26

    Cloud Firestore:異なるクエリに関する同じドキュメント。個別の読み取りとして課金されますか?

  27. 27

    Flutter:cloud_firestoreを使用してドキュメントからコレクションを取得するにはどうすればよいですか?

  28. 28

    Cloud Functionsを使用してFirestoreコレクション内のすべてのドキュメントに書き込む方法は?

  29. 29

    文字列を含む配列でドキュメントを取得するにはどうすればよいですか?Cloud Firestore&Cloud Functions

ホットタグ

アーカイブ