Сохранить NormalizedCollection обратно в Firebase
Я создаю простое приложение для создания заметок с AngularJS и Firebase. Пользователь создает профиль, а затем сохраняет свои заметки на сервере.
У меня есть следующая структура данных в моей базе данных Firebase:
users
-- user1
---- name : "John Doe",
---- notes
------ note1 : true
notes
-- note1
---- author : "user1",
---- title : "Foo",
---- content : "Bar"
До сих пор мне удалось получить все заметки от текущего пользователя, вошедшего в систему, используя следующую угловую фабрику:
app.factory('noteList', ['fbutil', '$firebaseArray','FBURL', function(fbutil, $firebaseArray, FBURL) {
var _getByUser = function(uid) {
var fb = new Firebase(FBURL);
var norm = new Firebase.util.NormalizedCollection( [fb.child('users/'+uid+'/notes'),'user'], [ fb.child('notes'), 'notes' ]);
norm = norm.select(
'notes.title',
'notes.content',
);
return $firebaseArray(norm.ref());
}
return {
getByUser: _getByUser
}
}]);
Однако, если я пытаюсь добавить новую заметку с помощью следующей функции, в заметке сохраняется только заметка, но ничего не происходит с users/user1/notes:
$scope.addNote = function(newNote) {
newNote.author = user.uid;
if( newNote && !newNote.$id ) {
console.log('Storing new note in DB');
var d = new Date();
newNote.created = d.getTime();
$scope.notes.$add(newNote).then(function(ref) {
var id = ref.key();
console.log('New Note Created with ID:' + id + " for user: " + user.uid);
var root = new Firebase(FBURL);
root.child("/users/" + user.uid + "/notes/" + id).set(true);
});
$scope.newNote = $scope.blankNote;
} else {
var d = new Date();
newNote.updated = d.getTime();
$scope.notes.$save(newNote);
}
};
Кажется, что обещание после $scope.notes.$ Add (newNote) не разрешено, поскольку консольный журнал "Новая заметка, созданная с помощью идентификатора..." не выводится.
Я застрял на этом пару часов и не могу понять, что случилось. Я довольно новичок в Angular и Firebase, и любая помощь, указывающая в правильном направлении, будет высоко оценена.
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ:
После нескольких часов поисков в Google я наконец смог решить проблему. В библиотеке Firebase.util возникла проблема, которая не позволила успешно выполнить обещание. Этот запрос на извлечение из репозитория Firebase.util решает проблему, и пока все работает нормально.