【发布时间】:2014-03-10 09:30:54
【问题描述】:
我想我已经接近了,我能够打印出属于用户的书籍的 ID,但一直未能成功地从 firebase 书籍参考中获取属于用户的书籍列表。
并在此处阅读有关非规范化数据的文档: https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html
如果我想在一个页面中显示用户,然后是所有书籍,我应该怎么做?
火力基地结构
FB
|
--user
| |
| --user1
| |
| --name: "test name"
| --email: "test@test.com"
| --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);
}
};
}]);
【问题讨论】:
-
您使用的是哪个版本的 angularFire?为什么不是 0.6?另外,Users.find 返回什么? Firebase 参考?一个字符串?
-
@Kato AngularFire 0.3。我想我会先玩一下教程中的内容,然后再更改库并可能会破坏一些东西。 Users.find 返回并绑定 $routeParams 中指定的 userId 的用户数据,所以我很确定它是 firebase 引用?这是调用的输出,Object {then: function, catch: function, finally: function}
标签: angularjs firebase angularjs-service angularfire