我的标题不是很准确,但是我不能说出我遇到的问题。
因此,我正在学习如何使用Firebase和angularfire,并且正在学习如何处理数据。
在我遇到这种类型的数组之前,一切都找到了。
这是我来自Firebase的实时数据库,它是一个历史。
[主数组是它自己的历史记录,它由两个数组(0和1)组成,它引用用户0和用户1的历史记录。
在用户0的数组中,有他的用户ID(_ID),以及两个子数组(0和1),它们表示他所做的级别。
每个子数组都有完成级别的次数,级别的ID(_id),以及包含每次运行级别的数据的很少子数组。
金达复杂!希望您了解我的数据库。我同意我没有关于如何构建数据库的最佳实践。
我的问题是,我正在为我的angularjs应用搜索这种类型的数组。
例如,我正在尝试制作这些变量:
$scope.history
$scope.userHistory
$scope.currentLevelUserHistory
$scope.lastRunCurrentLevelUserHistory
我设法得到了两个第一个变量,但是我不明白为什么我不继续下一个变量。
获取历史记录非常容易,我只是在工厂使用此功能
getHistoriques : function () {
return historiques;
}
“历史”指的是这里>
var ref = firebase.database().ref().child("historiques");
var historiques = $firebaseArray(ref);
获取userHistory有点棘手。
我创建了此功能
function search(key, array){
console.log("Searching array with the key : " + key);
for (var i=0; i < array.length; i++) {
if (array[i]._id === key) {
console.log(array[i]);
return array[i];
}
else {
}
}
}
并且输出是这样的对象。
但是进入下一步:currentLevelUserHistory。这对我来说是不可能的。我尝试了10种不同的方式,但无法正常工作。
我的最后一次尝试是在搜索功能中重新插入具有级别ID的先前对象的输出。
但是我得到的是“未定义”。
我尝试了很多事情,例如向对象添加[0],添加一堆东西。但是我不知道为什么它不起作用。对我来说,数组和子数组始终相同。
为什么不起作用?这是因为函数的输出正在修改我的数组?
我知道我的问题很长。非常感谢任何有胆识的人。
非常感谢。
第一次编辑:
users
|
- userId (according to firebase auth)
|
- name : ...
|
- surname : ...
|
- age : ...
|
- allowed levels :
|
- allowedLevel001 : levelId
|
- allowedLevel002 : levelId
|
- allowedLevel003 : levelId
-...
levelsData
|
- levelId
|
- level name : ...
|
- level description : ...
|
- first step
|
- step name : ...
|
- step desc : ...
|
- action needed : ...
|
- time : ...
- second step
|
- step name : ...
|
- step desc : ...
|
- action needed : ...
|
- time : ...
|
-...
levelsRunData
|
- userId+levelId
|
- run001
|
-
first step result :
|
- ...
second step result :
|
- ...
|
-...
- run002
|
-
first step result :
|
- ...
second step result :
|
- ...
|
-...
我的标题不是很准确,但是我不能说出我遇到的问题。因此,我正在学习如何使用Firebase和angularfire,并且正在学习如何处理数据。一切都找到了,直到我见面...
我想对您的数据库结构提出一些建议。它们基于我认为是您的用例。我当然完全错了。首先,有几点评论: