firebase 相当于 sql where in ()
Posted
技术标签:
【中文标题】firebase 相当于 sql where in ()【英文标题】:firebase equivalent to sql where in () 【发布时间】:2015-04-10 11:18:19 【问题描述】:我需要一个与 SQL 中的此查询等效的 firebase 查询:
select * from your_table where id in (123, 345, 679)
您将如何在 firebase 中执行此逻辑?
谢谢,
【问题讨论】:
【参考方案1】: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。
【讨论】:
弗兰克,谢谢您的回答...我正在使用 geofire,我认为按照您的建议进行操作效率不高。 geoQuery.on("key_entered", function(key, location, distance) ref.child("tikis").child(key).once("value", function(snap) // 用 snap 做事 .以上是关于firebase 相当于 sql where in ()的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Firebase where query arrayContains in List [重复]