【问题标题】:firebase equivalent to sql where in ()firebase 相当于 sql where in ()
【发布时间】:2015-04-10 11:18:19
【问题描述】:

我需要一个与 SQL 中的此查询等效的 firebase 查询:

select * from your_table where id in (123, 345, 679)

您将如何在 firebase 中执行此逻辑?

谢谢,

【问题讨论】:

    标签: firebase


    【解决方案1】:

    Firebase 的查询没有 ORIN 运算符。因此,您无法轻松地将上述查询映射到 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 做事}} .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2012-02-11
    • 2012-03-10
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多