Firebase.util - 具有完全不同结果的类似交叉点

时间:2014-11-17 14:05:11

标签: angularjs firebase intersection

我正在开发一个角度项目,它使用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)
};

0 个答案:

没有答案