【发布时间】:2022-11-25 15:43:43
【问题描述】:
我有一个 Firestore 数据库,其中包含数百(~700)个这样的文档:
{
name: string
email: string
coins: string
...
}
问题是“硬币”存储为字符串而不是数字。
我的查询是:
...
.where('coins', '>=', 0)
.where('coins', '<=', 30)
.get();
此查询获取 10、20、100、200、299999 等,因为它只考虑第一个字符。
预期结果应该只有 10、15、20 和 29。
对于如何在 where() 子句上进行这项工作,您有什么建议吗?
在最坏的情况下,如何一次将所有“硬币”类型从string 转换为number?
任何想法表示赞赏。
谢谢!
【问题讨论】:
-
您不能使查询使用您现在拥有的数据。如果您希望它按数字排序,硬币字段类型需要是一个数字。您将不得不单独阅读每个文档,修改内存中的数据,然后将其写回。没有批量更新。
-
谢谢@DougStevenson 我会暂时执行此操作,然后我将创建一些内容来修改字段类型。
-
听起来像是一个答案@DougStevenson :)
标签: node.js firebase google-cloud-firestore