首页 > 解决方案 > firebase 使用 ISOString 但只取日期

问题描述

所以我正在编写firebase命令,如果firebase字段中的日期与我确定的变量相等,则该命令会获取一些文档。

我的firebase中所有与日期相关的字段总是被转换toISOString

const today = moment().toISOString();

admin.firestore()
     .collection("orders").where("dueDate", "==", today)
     .get()

但后来我注意到,如果我正在执行isEqual只想从特定日期获取文档的 where 函数,那么我将不会得到它,因为它toISOString包含小时、分钟、秒。像这样

2020-08-02T19:14:22.104562

如果我想把所有文件放在

2020-08-02

我怎么做?

标签: javascriptfirebasegoogle-cloud-firestoremomentjs

解决方案


使用您现在拥有的数据:

admin.firestore()
    .collection("orders")
    .where("dueDate", ">=", "2020-08-02")
    .where("dueDate", "<", "2020-08-03")
    .get()

另一种选择(可能是更好的选择)是存储日期的 YYYY-MM-DD 字符串(您可以将其格式化为时刻以及在其主页上显示),并简单地查询是否相等:

admin.firestore()
    .collection("orders")
    .where("dueDate", "==", "2020-08-02")
    .get()

推荐阅读