gpt4 book ai didi

javascript - 使用当前日期作为条件从 firebase 检索数据

转载 作者:行者123 更新时间:2023-12-02 21:07:50 25 4
gpt4 key购买 nike

我需要通过将当前日期与 Firestore 数据库中名为开始日期的属性进行比较来检索数据。我只需要检索当前日期值与开始日期匹配的数据。我创建了一个查询来检索数据,但无法使用该查询检索任何数据。

事件.model.ts

    export interface Events{
title:String;
start:Date;
end:Date;

}

app.component.ts

event$:Observable<Events[]>;
const newDate = firebase.firestore.Timestamp.fromDate(new Date()).toDate();

this.event$ = this.firestore.collection<Events>('eventsCalender',
ref => ref.where('start','==',newDate)).valueChanges();



this.event$.subscribe(data => console.log(data));

我创建了一个接口(interface)并导出,并在 app.component.ts 中实现了检索事件的查询。 start 是开始日期变量,我在其中检查开始变量是否等于当前日期变量,如果是,则返回这些事件,否则没有当天事件。但我编写的代码即使数据库中有数据也无法获取任何数据。

最佳答案

当您在 Firestore 中存储日期时,它会以微秒粒度存储。当您在 JavaScript 中创建 new Date() 时,它具有毫秒粒度。在不同时刻创建的两个此类日期完全相等的可能性非常小。

您通常会想要执行以下操作之一:

  • 存储按一定粒度四舍五入的所有日期。例如:如果您只想存储日期,而不是时间,则可以确保将所有日期字段存储为该日期的午夜。然后在您的查询中您可以执行以下操作: var newDate = new Date(); newDate.setHours(0,0,0,0); 比较午夜和午夜。
  • 查询范围。例如:要获取开始日期为今天的所有字段,您可以执行以下操作:

    var startOfToday = new Date(); 
    startOfToday.setHours(0,0,0,0);
    var endOfToday = new Date();
    endOfToday.setHours(23,59,59,999);
    ref.where('start','>=',startOfToday).where('start', '<=', endOfToday)

关于javascript - 使用当前日期作为条件从 firebase 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61180427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com