我正在开发一个角度项目,它使用Firebase作为唯一的后端,angularFire用于某些同步情况,我正在使用此工具 Firebase.util 来处理共享资源。我的情况是这样的:
{
users {
user1 : {
tasks : {
active : {
task1 : true,
task2 : true
},
archived : {
task3 : true,
task4 : true
}
},
...
},
tasks : {
task1 : {
users : {
user1 : true,
user2 : true
}
},
...
}
},
}
我正在处理这样的查询:
var tasksRef = new $window.Firebase(FIREBASE_URL + '/tasks');
function _userActiveTasksRef(userId) {
return new $window.Firebase(FIREBASE_URL + '/users/' + userId + '/tasks/active');
}
function _userArchivedTasksRef(userId) {
return new $window.Firebase(FIREBASE_URL + '/users/' + userId + '/tasks/archived');
}
function getActive(userId) {
var interRef = $window.Firebase.util.intersection(_userActiveTasksRef(userId), tasksRef);
return $firebase(interRef).$asArray();
}
function getArchived(userId) {
var interRef = $window.Firebase.util.intersection(_userArchivedTasksRef(userId), tasksRef);
return $firebase(interRef).$asArray();
}
在第一种情况下,当我将活动任务与“所有任务”相交时,一切正常,但是当我尝试使用存档任务执行相同的操作时,交集总是空的。我已经记录了各个查询,一切都按预期工作,只有交集似乎不起作用。我有什么警告吗?如果重要的话,两个查询将同时加载..结果存储在这样的控制器中:
this.tasks = {
active: tasks.getActive(currentUser.uid),
archived: tasks.getArchived(currentUser.uid)
};