你怎么能用$ firebaseRefProvider获得动态uri的ref?

时间:2016-09-28 20:54:17

标签: angularjs firebase firebase-realtime-database angularfire2

$firebaseRefProvider用于在角度上推广DI以进行测试。尝试在应用程序中使用基于currentUser注入引用。

没有相关文档。在Firebase Youtube频道上找到了一个视频。例如:

var config = {
    apiKey: 'somekey',
    authDomain: 'someAuthDomain',
    databaseURL: 'https://some-domain.firebaseio.com',

angular.module('app').config(function($firebaseRefProvider) {
    $firebaseRefProvider.registerUrl({
        default: config.databaseURL,
        peopleRef: `${config.databaseURL}/people`

所以我想用它来更新用户Feed,如下所示:

    ...
     .service('FbArrayService', ($firebaseRef, $firebaseArray, $firebaseAuth)  => {
        var vm = this
        vm.currentUser = $firebaseAuth.$getAuth();
        vm.currentUserFeed = $firebaseArray($firebaseRef.child(`feeds/${vm.currentUser}`));
        })
       .controller('MyController', (FbArrayService) => {
       var userfeed = FbArrayService.currentUserFeed; 
       ... 
})

问题:收到错误 -

child is not a method of $firebaseRef provider

是否有办法从ref提供者那里获得root ref的子参考?

2 个答案:

答案 0 :(得分:0)

试试这个:

var ref = firebase.database().ref().child('feeds/${vm.currentUser}');

$firebaseArray(ref);

答案 1 :(得分:0)

好了,玩了一会儿后我终于意识到这是我忽略的普通逻辑。但你永远不会知道api。

 vm.currentUserFeed = $firebaseArray($firebaseRef.child(`feeds/${vm.currentUser}`));

需要 .default (实际引用根目录),因此可以使用子方法。

 vm.currentUserFeed = $firebaseArray($firebaseRef.default.child.(`feeds/${vm.currentUser}`));

我想我认为.default属性是自动提供给基础提供者的