【问题标题】:Get documents with query on document id in Cloud Functions and Firestore [duplicate]获取在 Cloud Functions 和 Firestore 中查询文档 ID 的文档 [重复]
【发布时间】:2021-12-28 09:30:50
【问题描述】:

我在 firestore 云函数中有一个更新文档的触发器,在这个函数中我想获取包含特定字符串的文档。 所以我尝试了这个:

const chat_threads = admin.firestore().collectionGroup('chatThreads').where(admin.firestore.FieldPath.documentId(),'array-contains', reciever_id).get().then(function (querySnapshot) {
    querySnapshot.forEach((doc) => {
      console.log(doc.id, " => ", doc.data());
    });
});

但我收到此错误

错误:无效查询。您不能对 FieldPath.documentId() 执行“数组包含”查询。

还有其他方法可以得到结果吗?或者我可以用什么代替array-contains

【问题讨论】:

  • admin.firestore.FieldPath.documentId() 是文档 ID。它是一个字符串,而不是一个数组。你能告诉我们更多关于你想要做什么的信息吗?看起来好像您正在尝试获取集合中具有特定 ID 的所有文档。但如果是这样,为什么不使用 ID 自行检索该文档呢?您不需要 where 查询,因为您已经知道 ID
  • 我正在尝试获取包含特定子字符串的所有文档,起初我不知道使用数组包含是错误的,但现在我清楚了,谢谢澄清。 @S.Ramjit

标签: javascript google-cloud-firestore google-cloud-functions


【解决方案1】:

我想获取包含特定字符串的文档

Firestore 无法找到具有任意子字符串的文档。它可以做前缀过滤(所以一个以特定值开头的字符串),但没有其他子字符串匹配。

这个之前已经介绍过几次了,请看一下:

虽然这些并非特定于文档 ID(根据您的需要),但同样的限制(和解决方案/变通办法)适用于此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2018-12-05
    • 2021-07-20
    • 2021-05-24
    • 2018-09-03
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多