Cloud Firestore:使用云功能过滤当天的文档

时间:2019-12-23 14:18:13

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

我在Firestore文档中存储了createdAt字段,其中包含用户的日期和时区。例如(UTC-3,2019年12月22日晚上9:21:42)

然后,我有一个云功能,我想在其中检索所有 Today 文档。问题在于云功能不知道时区,并且在检索不同时区的文档时会变得混乱。

const now: Date = new Date();

const docQuery = await db
   .collection('users')
   .where('createdAt', '>', new Date(now.getFullYear(), now.getMonth(), now.getDate()))
   .where('createdAt', '<', new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59))
   .get();

now日期为UTC-0,如果我有UTC-22:00前一天的文档,查询将检索它,但从技术上讲,它不是Today文档。

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

在Firestore文档中使用timestamp代替日期。

ref.doc(key).set({
  created : firebase.firestore.Timestamp.fromDate(new Date("December 10, 1815 19:00:00 EST"))
}) 
  

时间戳记表示与任何时区或日历无关的时间点,以UTC纪元时间中的纳秒分辨率表示为秒和秒的分数。

然后可以使用方法toDate()将时间戳转换为Date对象。