【发布时间】:2015-04-10 11:18:19
【问题描述】:
我需要一个与 SQL 中的此查询等效的 firebase 查询:
select * from your_table where id in (123, 345, 679)
您将如何在 firebase 中执行此逻辑?
谢谢,
【问题讨论】:
标签: firebase
我需要一个与 SQL 中的此查询等效的 firebase 查询:
select * from your_table where id in (123, 345, 679)
您将如何在 firebase 中执行此逻辑?
谢谢,
【问题讨论】:
标签: firebase
Firebase 的查询没有 OR 或 IN 运算符。因此,您无法轻松地将上述查询映射到 Firebase。
一种解决方法是实现一个简单地循环元素的函数:
function loadThese(ids, callback) {
var rows = [];
while (ids.length > 0) {
var id = ids.splice(0,1)[0];
refToTable.child(id).once('value', function(snapshot) {
rows.push(snapshot.val());
});
}
callback(rows);
}
请注意,以上内容可能是递归的,因此请使用它来获取灵感,而不是复制/粘贴代码。
解决问题的另一种(可能是更好的方法)是找出为什么选择这三行以及为什么不选择其他行。这些行可能有一些共同点。一旦您了解了它们的共同点,您就可以将其建模到数据结构中。
更新 (20160408):关于为什么上述在 Firebase 上比您预期的要快得多的原因,请参阅 this answer。
【讨论】: