firebase 相当于 sql where in ()
firebase equivalent to sql where in ()
我需要一个与 SQL 中的此查询等效的 firebase 查询:
select * from your_table where id in (123, 345, 679)
你会如何在 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);
}
请注意,上面的内容可能是递归的,因此请将其用作灵感而不是 copy/paste 代码。
解决问题的另一种(可能是更好的方法)是弄清楚为什么选择这三行而不选择其他行。这些行可能有一些共同点。一旦您知道它们的共同点,您就可以将其建模到数据结构中。
更新 (20160408):有关为什么上述内容在 Firebase 上比您预期的要快得多的良好解释,请参阅 。
我需要一个与 SQL 中的此查询等效的 firebase 查询:
select * from your_table where id in (123, 345, 679)
你会如何在 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);
}
请注意,上面的内容可能是递归的,因此请将其用作灵感而不是 copy/paste 代码。
解决问题的另一种(可能是更好的方法)是弄清楚为什么选择这三行而不选择其他行。这些行可能有一些共同点。一旦您知道它们的共同点,您就可以将其建模到数据结构中。
更新 (20160408):有关为什么上述内容在 Firebase 上比您预期的要快得多的良好解释,请参阅