Google Firestore - 如何在一次往返中通过多个ID获取多个文档?

我想知道是否有可能通过ID列表在一次往返(网络调用)到Firestore数据库中获取多个文档。


答案 1

如果你在 Node 中:

https://github.com/googleapis/nodejs-firestore/blob/master/dev/src/index.ts#L978

/**
* Retrieves multiple documents from Firestore.
*
* @param {...DocumentReference} documents - The document references
* to receive.
* @returns {Promise<Array.<DocumentSnapshot>>} A Promise that
* contains an array with the resulting document snapshots.
*
* @example
* let documentRef1 = firestore.doc('col/doc1');
* let documentRef2 = firestore.doc('col/doc2');
*
* firestore.getAll(documentRef1, documentRef2).then(docs => {
*   console.log(`First document: ${JSON.stringify(docs[0])}`);
*   console.log(`Second document: ${JSON.stringify(docs[1])}`);
* });
*/

这是专门针对服务器 SDK 的

更新:“Cloud Firestore [客户端 sdk] 现在支持 IN 查询!”

https://firebase.googleblog.com/2019/11/cloud-firestore-now-supports-in-queries.html

myCollection.where(firestore.FieldPath.documentId(), 'in', ["123","456","789"])


答案 2

他们刚刚宣布了此功能,https://firebase.googleblog.com/2019/11/cloud-firestore-now-supports-in-queries.html

现在,您可以使用类似查询,但请注意,输入大小不能大于 10。

userCollection.where('uid', 'in', ["1231","222","2131"])