Я думаю, что приближаюсь, я могу распечатать идентификатор книг, принадлежащих пользователю, но безуспешно пытался получить список книг, принадлежащих пользователю, из справочника книг firebase.
Я следую за этим учебным пособием: http://www.thinkster.io/pick/eHPCs7s87O/angularjs-tutorial-learn-to-rapidly-build-real-time-web-apps-with-firebase#item-526e9330d90f99661f00046c
а также чтение документации о денормализации данных здесь: https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html
Как мне это сделать, если я хочу отобразить пользователя на странице, а затем все его книги?
структура firebase
FB
|
--user
| |
| --user1
| |
| --name: "test name"
| --email: "[email protected]"
| --books
| |
| "-JFZG3coHOAblHZ7XSjK": true
| "-KJKJASDIUOPIWE9WEeJ": true
| "-YtUTRGJLNL876F3SSwS": true
|
--books
|
--"-JFZG3coHOAblHZ7XSjK"
| |
| --title: "book title 1"
| --ownerId: "user1"
|
--"-KJKJASDIUOPIWE9WEeJ"
| |
| --title: "book title 2"
| --ownerId: "user1"
|
--"-YtUTRGJLNL876F3SSwS"
| |
| --title: "book title 2"
| --ownerId: "user1"
Вид
<div data-ng-controller="UsersController" data-ng-init="findOneUser()">
<h2>Profile</h2>
<img class="image_preview" data-ng-src="{{user.photoUrl}}">
<p>Name: {{ user.name }}</p>
<p>Name: {{ user.email }}</p>
<a data-ng-href="#/users/{{ userId }}/edit">Edit</a>
<h2>Coffee Blends</h2>
<div data-ng-repeat="book in user.books">
<p>---</p>
<p>{{user.books}}</p>
</div>
<!--<div data-ng-controller="BooksController" data-init="">-->
<!--</div>-->
</div>
контроллер
'use strict';
angular.module('ccApp.controllers.users', ['ccApp.services.users'])
.controller('UsersController', ['$scope', '$routeParams', '$location', 'angularFire', 'Users',
function($scope, $routeParams, $location, angularFire, Users){
$scope.user = {};
$scope.userId = $routeParams.userId;
$scope.findOneUser = function(userId){
if (!!$scope.userId){
angularFire(Users.find($routeParams.userId), $scope, 'user');
}
};
$scope.updatePhotoUrl = function(url, user){
$scope.fileUrl = url;
console.log($scope.fileUrl[0].url);
user.photoUrl = $scope.fileUrl[0].url;
};
$scope.findUsers = function(){
$scope.users = Users.collection();
};
$scope.findWholesalers = function(){
$scope.wholesalers = Users.collection();
};
}]);
Сервис
'use strict';
angular.module('ccApp.services.users', ['ccApp.services.firebaseRefs'])
.factory('Users', ['angularFireCollection', 'FireRef',
function(angularFireCollection, FireRef){
return{
collection: function(cb){
return angularFireCollection(FireRef.users(), cb);
}
, find: function(userId){
return FireRef.users().child('/'+userId);
}
};
}]);