2014-05-22 66 views
0

Tryng可以使用Firebase中的“Where”风格得到一个简单的结果,但在时间无效的情况下,任何人都可以提供帮助吗?Firebase“Where”like search

http://jsfiddle.net/vQEmt/68/

new Firebase("https://examples-sql-queries.firebaseio.com/messages") 
.startAt('Inigo Montoya') 
.endAt('Inigo Montoya') 
.once('value', show); 

function show(snap) { 
    $('pre').text(JSON.stringify(snap.val(), null, 2)); 
} 

回答

2

Looking at the applicable records,我看到.priority设置为时间戳,而不是用户名。

因此,您无法在这里尝试启动/结束用户名。这些仅适用于.priority字段。随着Firebase API的增强功能不断推出,这些功能将在明年大幅扩展。

现在,对于字段的任意搜索,您最好的选择是使用搜索引擎。这很容易让一个人旋转起来,让搜索引擎的全部力量触手可及,而不是用冰河的SQL式的查询。看起来你已经无意中发现了该主题的appropriate blog posts

当然,您可以使用一个按名称列出用户并存储其所有后期ID的键的索引。而且,考虑到这是一个非常小的数据集 - 小于100k - 甚至可以抓住整个事物并在客户端上搜索它(更大的数据集可以使用endAt/startAt/limit来获取最近的消息子集):

new Firebase("https://examples-sql-queries.firebaseio.com/messages").once('value', function(snapshot) { 
    var messages = []; 
    snapshot.forEach(function(ss) { 
     if(ss.val().name === "Inigo Montoya") { 
     messages.push(ss.val()); 
     } 
    }); 
    console.log(messages); 
}); 

另见:Database-style queries with Firebase