我正在执行一个查询,该查询应该返回从月初到月底之间的值。当记录在月的第一天输入时,记录将不被返回.只有在这个月的第一天之后才返回记录。
在云雾恢复数据库中,我发送一个Date()类型的对象,但是当将保存转换为Timestamp时,记录的返回是Timestamp类型,而不是Date()类型。
我已经尝试通过调用getTime()方法来执行查询,但没有返回任何记录。
在银行记录的日期如下:
February 1, 2019 00:00:00 UTC-3如果我更改了记录与其他记录一起返回的时间。
February 1, 2019 01:00:00 UTC-3我使用垫-数据报警器 of 角质材料来保存日期,并且这个组件不会只节省时间和日期。
我已经尝试将会议记录设置为每次输入记录的日期,但当我这样做时,将不会返回月份的最后一天的记录。
下面是用于执行查询的代码::
selectedMonth$: BehaviorSubject<{ startOf: Date, endOf: Date }>;
startOfMonth = moment(new Date()).startOf('month').toDate();
endOfMonth = moment(new Date()).endOf('month').toDate();
this.selectedMonth$ = new BehaviorSubject({
startOf: this.startOfMonth,
endOf: this.endOfMonth
});
this.transactions$ = this.selectedMonth$.pipe(
switchMap(dateSelected => this._angularFirestore.collection(collectionRef, ref =>
ref.where('dueDate', '>', dateSelected.startOf)
.where('dueDate', '<', dateSelected.endOf))
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as any;
data.id = a.payload.doc.id;
return data;
});
})
)));
updateSelectedMonth(date: Date): void {
this.startOfMonth = moment(date).startOf('month').toDate();
this.endOfMonth = moment(date).endOf('month').toDate();
this.selectedMonth$.next({ startOf: this.startOfMonth, endOf: this.endOfMonth });
}发布于 2019-01-30 04:36:13
更改:
ref.where('dueDate', '>', dateSelected.startOf)
.where('dueDate', '<', dateSelected.endOf))至:
ref.where('dueDate', '>=', dateSelected.startOf)
.where('dueDate', '<=', dateSelected.endOf))然后,确实要确保dateSelected.endOf包含该日期的最新可能时刻(23:59:59),或者实际上只是将其设置为0:00的第二天,并且:
ref.where('dueDate', '>=', dateSelected.startOf)
.where('dueDate', '<', dateSelected.endOf))https://stackoverflow.com/questions/54433242
复制相似问题