IDが5gF5FqRPvdroRF8isOwdの単一のドキュメントを含む「categories」というコレクションがあります。
「チケット」と呼ばれる別のコレクションがあります。各チケットには、チケットを特定のカテゴリに割り当てる参照フィールドがあります。
チケットコレクションのフィールドは「カテゴリ」と呼ばれ、reference
のフィールドタイプを持ちます。
以下のコードでは、categoryDocId
はクエリを実行するカテゴリのドキュメントIDです。
const categoryDocID = `5gF5FqRPvdroRF8isOwd`;
const files = await firebase
.firestore()
.collection('tickets')
.where('category', '==', categoryDocID)
.get();
どして files.length
0を返しますか?
テストのために、category
フィールドタイプを文字列に変更し、直接参照ではなくカテゴリIDに設定しました。これにより、カテゴリに割り当てられたチケットが正しく返されたため、reference
フィールドのクエリ方法に関するものであると思われます。
ドキュメントで here を読みますが、参照データ型は DocumentReferences の格納に使用されます。
クエリで使用する場合は、単純な文字列を使用することはできず、ドキュメントのUIDも使用できません(つまり、'5gF5FqRPvdroRF8isOwd'
)、またはフィールドに格納されている文字列値(つまり、'/categories/5gF5FqRPvdroRF8isOwd'
)。
次のように、DocumentReferenceを作成し、クエリで使用する必要があります。
const categoryDocRef = firebase.firestore()
.collection('categories')
.doc('5gF5FqRPvdroRF8isOwd');
const files = await firebase
.firestore()
.collection('tickets')
.where('category', '==', categoryDocRef)
.get();