当前位置: 首页 > 知识库问答 >
问题:

如何在一次往返中通过多个id获得多个文档?

周和歌
2023-03-14

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

共有3个答案

堵宪
2023-03-14

实际上,你会使用firestore。都这样吗

async getUsers({userIds}) {
    const refs = userIds.map(id => this.firestore.doc(`users/${id}`))
    const users = await this.firestore.getAll(...refs)
    console.log(users.map(doc => doc.data()))
}

还是用promise语法

getUsers({userIds}) {
    const refs = userIds.map(id => this.firestore.doc(`users/${id}`))
    this.firestore.getAll(...refs).then(users => console.log(users.map(doc => doc.data())))
}
岳昊空
2023-03-14

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

现在,您可以使用像这样的查询,但是请注意输入大小不能大于10。

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

伊羽
2023-03-14

如果您在节点内:

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。其中(firestore.FieldPath.documentId(),'in',[“123”,“456”,“789”])

 类似资料:
  • 问题内容: 我在应用程序中使用MongoDB,需要在MongoDB集合中插入多个文档。我使用的版本是1.6 我在这里看到一个例子 http://docs.mongodb.org/manual/core/create/ 在里面 批量插入多个文档 部分 作者传递数组的位置。 当我尝试同样的操作时,但是为什么不允许这样做,请告诉我如何一次插入多个文档? 请让我知道这是什么方法,以便可以通过java一次插

  • 问题内容: 我想知道如何编写此查询。 我知道这个实际的语法是虚假的,但是它将帮助您理解我想要的。我需要这种格式,因为它是更大查询的一部分。 我需要所有这些都在一个查询中返回。 此外,它必须排成一排,因此以下内容将不起作用: 问题答案: 您可以将语句与聚合函数一起使用。这与某些RDBMS中的函数基本相同:

  • 我创建了一个扩展AsyncTask的AsynTaskInsideActivity类 位置\u id 我想从每一列中提取记录。因此,为了存储每个列的每个记录,我创建了四个类型数组(即每列一个),并成功地将检索到的光标数据存储在每个数组中。现在,问题是我需要返回每一列的记录。因此,具体地说,我如何从one-AsyncTask类返回这四个单独的List-type数组。目前,我只返回列表类型的数组,即lo

  • 问题内容: 我想做类似的事情: 如何检查和是否都在dict中? 问题答案: 好吧,你可以这样做:

  • 问题内容: 当我从命令行调用存储的proc时,我得到以下信息。 这是我的Java代码的片段 当我执行该语句时,仅返回event_table结果。我阅读以下查询: 我试图避免对数据库发出多个请求,因为它非常慢(300毫秒,具体取决于多少结果) 可能吗? 问题答案: 我找到了这篇很棒的文章。http://www.herongyang.com/JDBC/MySQL-CallableStatement-M