Open1
【JavaScript】Firestoreで特定コレクション内のサブコレクションを全部取得する
サブコレクションをすべて取得する際にそれぞれに上位のコレクションの値を所持している状態にする
// 元のコレクションを参照する
const parentsSnapshot = await db.collection('parents').get()
// サブコレクションを編集してIDとpromiseを返す
const promises = parentsSnapshot.docs.map(async (parent) => {
const childSnapshot = await parent.ref.collection('child').get()
return childSnapshot.docs.map((child) => {
const parentTmp = parent.data()
parentTmp.id = parent.id
return {
id: product.id,
data: product.data(),
parent: parentTmp
}
})
})
// 全てのサブコレクションの取得をPromise.allで行う
const children = await Promise.all(promises)
// サブコレクションがドキュメント毎に2次元配列になっているので.flat()する
const data = children .flat()