【问题标题】:Fields saved on Firestore as string but the "where" clausule needs a string在 Firestore 上保存为字符串的字段,但 \"where\" 子句需要一个字符串
【发布时间】:2022-11-25 15:43:43
【问题描述】:

我有一个 Firestore 数据库,其中包含数百(~700)个这样的文档:

{
  name: string
  email: string
  coins: string
  ...
}

问题是“硬币”存储为字符串而不是数字。

我的查询是:

  ...
  .where('coins', '>=', 0)
  .where('coins', '<=', 30)
  .get();

此查询获取 1020100200299999 等,因为它只考虑第一个字符。

预期结果应该只有 10152029

对于如何在 where() 子句上进行这项工作,您有什么建议吗?

在最坏的情况下,如何一次将所有“硬币”类型从string 转换为number

任何想法表示赞赏。

谢谢!

【问题讨论】:

  • 您不能使查询使用您现在拥有的数据。如果您希望它按数字排序,硬币字段类型需要是一个数字。您将不得不单独阅读每个文档,修改内存中的数据,然后将其写回。没有批量更新。
  • 谢谢@DougStevenson 我会暂时执行此操作,然后我将创建一些内容来修改字段类型。
  • 听起来像是一个答案@DougStevenson :)

标签: node.js firebase google-cloud-firestore


【解决方案1】:

作为社区维基回答这个问题。正如上面 cmets 中的@DougStevenson 所提到的。

您不能使查询使用您现在拥有的数据。如果您希望它按数字排序,硬币字段类型需要是一个数字。您将不得不单独阅读每个文档,修改内存中的数据,然后将其写回。没有批量更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2019-07-01
    • 2021-01-31
    相关资源
    最近更新 更多