使用firebase进行动态查询
Dynamic querying using firebase
我有这个用例,我必须根据用户以对象形式发送的参数进行查询。用户可以发送多个参数进行查询。它类似于SQL中的"SELECT * FROM users WHERE FIRST_NAME = 'something' AND LAST_NAME = 'something'"。
示例对象可以是:
var object= {
email: "some...@google.com",
location: "San Jose, CA"
};
我有这些字段(email &我们把它命名为/users
所以用户端点看起来像:
{
"randomID1":{
email: "some...@google.com",
location: "San Jose, CA"
},
"randomID2":{
email: "anothe...@fb.com",
location: "Menlo Park, CA"
}
}
我必须使用上面提到的对象并动态地为firebase生成一个查询,下面是我所拥有的:
return $q(function(resolve, reject) {
ref.orderByChild("email");
for(var key in filterObject){
if(filterObject.hasOwnProperty(key)){
console.log("Key: ",key);
console.log("Value: ",filterObject[key]);
ref.equalTo(""+filterObject[key],""+key);
}
}
return ref.on("value", function (snapshot) {
resolve(snapshot.val());
}, function (errorObject) {
reject(errorObject);
});
});
这总是返回给我所有的数据,并没有真正过滤任何东西。有人能给点建议吗?我是firebase的新手,如果这是一个幼稚的问题,很抱歉。
谢谢
经过一番尝试,我找到了答案。基本上,Firebase不允许查询多个属性,所以我在第一个属性上查询Firebase,如果还有更多的属性要查询,我使用下划线js来过滤那些剩余的属性。
代码如下:
return $q(function(resolve, reject) {
var query = ref ;
for(var key in filterObject){
if(filterObject.hasOwnProperty(key)){
query = query.orderByChild(key);
query = query.equalTo(filterObject[key]);
delete(filterObject[key]);
break; //break out after querying the first property in firebase
}
}
return query.on("value", function (snapshot) {
var objects = snapshot.val();
var result = _.filter(objects, function(obj){
return _.isMatch(obj, filterObject); //for all other objects I use underscorejs to filter
});
resolve(result);
}, function (errorObject) {
reject(errorObject);
});
});
相关文章:
- 如何使用pouchdb创建动态查询(couchdb可能也是如此)
- 新手查询动态添加属性
- j查询动态表计算
- 如何根据查询字符串值创建动态超链接
- 我对这个动态查询做错了什么
- 动态添加数据时按数据属性查询JQuery选择器
- 具有动态查询的Webpack加载器
- 从Ember.js中的选择框动态更改当前ajax查找查询
- mongoDB动态查询中的日期筛选器
- 从 URL - AngularJS 获取动态查询字符串参数
- 角度 ui 路由器动态查询字符串定义
- 使用可动态查询样式化列表
- 推特的提前输入示例/动态查询
- 在Mongodb + Mongoose.js中动态查询嵌套对象
- 在MongoDB中动态查询字段
- 如何在 where 子句中使用动态查询字段
- 使用firebase进行动态查询
- 动态查询字符串php
- 如何从动态查询结果传递选定的sql行id到javascript
- 使用Mongoose进行动态查询