根据时间戳字段从firestore获取文档



我正在尝试使用collectionGroup查询获得具有dateStart时间戳字段的所有文档,该字段在将来小于24小时。然而,获取所有文档并对每个文档进行测试并不理想,因为文档会随着时间的推移而累积。

我试着做下面的事情,但是它给出了一个错误:

const currentDate = moment();
const snap = db.collectionGroup('appointments').where(moment.duration(currentDate.diff(moment(new Date('dateStart')))).asHours() < 25).get()
.then(function(querySnapshot){
querySnapshot.forEach(function(doc){
console.log(doc.id);
});
});

我得到的错误如下:

错误:参数"fieldPath"不是有效的字段路径。路径只能指定为字符串或通过FieldPath对象。

我不确定是否有可能在查询的where子句中添加这样的逻辑,或者如果我只是以错误的方式这样做。我目前使用的时刻库,但这不是强制性的解决方案。我确实认为这是获得日期对象之间差异的最简单方法。

有没有人有办法在不遍历集合中的所有文档的情况下完成这项工作?

你在做一件很奇怪的事。

where函数应为:

.where('dateStart', '<', next24HoursDate)

那么试试这样写:

const next24HoursDate = moment(new Date()).add(24, 'hours');

const snap = db.collectionGroup('appointments')
.where('dateStart', '<', next24HoursDate)
.get()
.then( function(querySnapshot) {
querySnapshot.forEach( function(doc) {
console.log(doc.id);
});
});

最新更新