我会将此问题标记为重复,但此代码可能有助于您开始构建自己的搜索索引:
var ref = new Firebase('https://yours.firebaseio.com/users');
var index = new Firebase('https://yours.firebaseio.com/index');
function createIndex() {
ref.once('value', function(snapshot) {
snapshot.forEach(function(userSnapshot) {
var user = userSnapshot.val();
index.child(user.age).child(userSnapshot.key()).set(true);
Object.keys(user.activities).forEach(function(activity) {
index.child(activity).child(userSnapshot.key()).set(true);
});
});
});
}
由于您要搜索所有用户,因此代码会遍历所有用户(通常应该在添加或修改用户时执行此操作,因此通过侦听child_
事件)。然后它将相关节点添加到索引中:一个用于年龄,一个用于每个类别。
在您的数据上运行此操作后,index
节点如下所示:
{
"21": {"123":true},
"30":{"124":true},
"bike":{"124":true},
"horse":{"123":true}
}
因此,您可以通过以下方式获得 20 到 30 之间的所有用户:
ref.orderByKey().startAt("20").endAt("30").on('child_added'
或所有具有“马”活动的用户:
ref.orderByKey().equalTo("horse").on('child_added'