Мой заголовок не очень точный, но я не могу назвать проблему, с которой сталкиваюсь.
Итак, я учусь использовать firebase и angularfire, и я учусь манипулировать data.
Все было найдено, пока я не встретил этот тип массива.
Это моя база данных реального времени от Firebase, и это история.
Основной массив - это собственная история, он состоит из двух массивов (0 и 1), которые относятся к истории пользователя 0 и пользователя 1.
В массив пользователя 0, его идентификатор пользователя (_ID) и два вложенных массива (0 и 1), которые относятся к уровням, которые он сделал.
В каждом вложенном массиве указано, сколько раз уровень было сделано, идентификатор (_id) уровня и несколько вложенных массивов, содержащих данные о каждом запуске уровня.
Вроде сложно! Я надеюсь, что вы понимаете мою базу данных. Я согласен с тем, что у меня нет наилучшей практики структурирования моей базы данных.
Моя проблема в том, что я пытаюсь найти этот тип массивов для моего angularjs приложения.
Например, я пытаюсь сделать эти переменные:
$scope.history
$scope.userHistory
$scope.currentLevelUserHistory
$scope.lastRunCurrentLevelUserHistory
Мне удалось получить два первых переменные, но я не понимаю, почему я не работаю, как nexts .
Получение истории очень просто, я просто использую эту функцию на своей фабрике
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 разных способов, но я не смог заставить его работать.
Моя последняя попытка заключалась в том, чтобы заново ввести вывод предыдущего объекта с идентификатором уровня в функцию поиска.
Но я получаю "undefined".
Я пробовал так много вещей, как добавление [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 :
|
- ...
|
-...