我正在尝试进行复合查询(合并两个孩子)。我想做的是获取早于5分钟并且也是类型的对象。
因此,我将孩子type
和date
合并为一个名为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
子对象的对象的结果。
答案 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');