结合文本和日期的Firebase实时数据库复合查询

时间:2019-02-28 16:01:43

标签: javascript firebase firebase-realtime-database

我正在尝试进行复合查询(合并两个孩子)。我想做的是获取早于5分钟并且也是类型的对象。

因此,我将孩子typedate合并为一个名为type_date的新孩子,我这样查询:

const now = Date.now();
const fiveMinutesMs = 5*60*1000;
const fiveMinutesAgo = now - fiveMinutesMs;

const fiveMinutesAgoQuery = "type_" + fiveMinutesAgo;

ref.orderByChild('type_date').endAt(fiveMinutesAgoQuery).once('value');

唯一的事情是它不起作用。它为我提供了甚至没有type_date子对象的对象的结果。

3 个答案:

答案 0 :(得分:0)

尝试使用startAt而不是endAt。我希望它能起作用。

答案 1 :(得分:0)

编辑:糟糕,我太快了...。仅当我只过滤日期字符串而不与我想要的前置类型一起过滤时,它才起作用...

这可行:

const fiveMinutesAgoIso = new Date(fiveMinutesAgo).toISOString();
const fiveMinutesAgoQuery = String(fiveMinutesAgoIso);

但不是:

const fiveMinutesAgoIso = new Date(fiveMinutesAgo).toISOString();
const fiveMinutesAgoQuery = "type_" + fiveMinutesAgoIso;

答案 2 :(得分:0)

只需按照文档所述进行复合查询:

const fiveMinutesAgoIso = new Date(fiveMinutesAgo).toISOString();

ref.where("type", "==", TYPE_YOU_WANT).orderByChild('type').endAt(fiveMinutesAgoQuery).once('value');