我有一个包含待处理好友请求数组的数据库结构:
绿色代表我想要搜索的值。
现在我想做一些简单的检查,看一个人是否已经向一个人发送了一个朋友请求,而没有先获取数据然后循环遍历它,这会对性能产生影响。
我查看了这个查询用户的代码段:
https://gist.github.com/anantn/4323949
我为我的场景调整了它并使它更通用,以便我可以轻松查询我想要的任何内容,此函数位于名为listView
的工厂内:
globals
来自我的控制器:
searchFirebase: function(data, endpoint) {
var dataExists;
function dataExistsCallback(data, exists) {
if (exists) {
dataExists = false;
} else {
dataExists = true;
}
}
function checkIfDataExists(data) {
// fbRefs.getReference returns new Firebase('https://mydb.firebaseio.com/somepath') for example
var ref = fbRefs.getReference(endpoint);
ref.child(data).once('value', function(snapshot) {
var exists = (snapshot.val() !== null);
dataExistsCallback(data, exists);
});
}
checkIfDataExists(data);
return dataExists;
}
问题是var path = 'users/' + $routeParams.id + '/profile/friendslist/pending';
var uuid = 'facebook:1230928984398439'; // Example uuid to query for
console.log(globals.searchFirebase(uuid, path));
函数总是返回true,无论我传入什么数据。
我希望能够传递一个字符串,该字符串针对一堆对象的属性进行测试,以查看该值是否存在。
我是否在这里犯了任何明显的错误,导致它总是返回true?