如何在Firestore中获取密钥列表?

时间:2017-11-01 19:02:45

标签: firebase google-cloud-firestore

我有一组带有生成标识符的文档。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中会更好吗?

2 个答案:

答案 0 :(得分:9)

答案取决于您尝试使用的API。

对于移动/网络SDK ,由于这些客户do not support projections of any kind无法满足您的要求。

对于服务器SDK ,您可以进行空投影,即

db.collection('foo').select()

在这种情况下,服务器会向您发送匹配的文档,但会省略查询结果中的所有字段。

对于 REST API ,您可以使用包含字段掩码runQuery的{​​{1}}执行等效操作,如下所示:

'__name__'

视情况替换curl -vsH 'Content-Type: application/json' \ --data '{ "parent": "projects/my-project/databases/(default)", "structuredQuery":{ "from": [{"collectionId": "my-collection"}], "select": { "fields": [{"fieldPath":"__name__"}] } } }' \ 'https://firestore.googleapis.com/v1beta1/projects/my-project/databases/(default)/documents:runQuery' my-project。请注意,my-collection中的"collectionId"只是最正确的名称组件。如果您想在子集合中使用密钥,则REST API需要"from"字段中的父文档名称。

答案 1 :(得分:5)

在node.js运行时,您可以获得这样的文档ID列表

const documentReferences = await admin.firestore()
        .collection('someCollection')
        .listDocuments()

const documentIds = documentReferences.map(it => it.id)