【问题标题】:Firestore array contains query not returning result [duplicate]Firestore 数组包含不返回结果的查询 [重复]
【发布时间】:2020-07-08 05:06:53
【问题描述】:

我收集了大约 30 条记录 todos,其中几乎 25 条包含单词 work。现在,当我尝试使用 array-contains 时,它不会返回任何内容。

这是我的查询代码:

firebase.firestore().collection("todos")
.where('Workdesc', 'array-contains', 'work')
.get()
.then(querySnapshot => {
    querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " ===> ", doc.data());
    });
  });

这是我的 Firestore 屏幕截图:

查询似乎按照文档,但为什么它没有返回任何内容?

【问题讨论】:

标签: firebase google-cloud-firestore


【解决方案1】:

您没有得到任何结果,因为您在数据库中的 Workdesc 属性是字符串类型和 not 数组。看到引号了吗?如果您需要数组类型的属性,那么您应该以这种方式保存。见followers 属性,是一个数组。尝试以相同的方式保存其他属性。

【讨论】:

  • 如果我想在一个字符串中搜索一个单词,那我该怎么做呢?
  • 检查 thisthis
  • 我已经在数组上实现了一些,问题是,数组中的值是 kj implementation ,现在如果我写 kj 它没有结果,如果我给出完全相同的词,那么只有它给出结果..我怎样才能通过写kj得到结果??
  • 正如 Frank van Puffelen 在他的 cmets 中提到的那样,您无法实现这一目标。使用数组时,匹配的是整个单词(字符串)而不是子字符串。
  • 您好,已接受回答。需要一个指导,我在上面的链接中找到了一个答案 - .startAt(searchName).endAt(searchName + "\uf8ff") ,当我在这样的地方使用它时 -.where(startAt("kj").endAt("kj" + "\uf8ff")) ,我收到错误 expected 3 arguments,got 1,没有提供 opstr 的参数,我该怎么做解决这个问题?
猜你喜欢
  • 2019-10-28
  • 2016-07-12
  • 1970-01-01
  • 2011-01-19
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多