【问题标题】:How can you get ref's with dynamic uri's with $firebaseRefProvider?如何使用 $firebaseRefProvider 获取具有动态 uri 的 ref?
【发布时间】:2017-02-07 00:31:55
【问题描述】:

$firebaseRefProvider 用于在 Angular 中提升 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`

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

    ...
     .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 提供者获取根 ref 的子 ref 吗?

【问题讨论】:

    标签: angularjs firebase firebase-realtime-database angularfire2


    【解决方案1】:

    好吧,在玩了一段时间之后,我终于意识到这是我忽略的纯 js 逻辑。但是你永远不会知道在一个 api 中。

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

    需要有 .default (它实际上引用了根),以便可以使用子方法。

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

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

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

      • 是的,我知道。谢谢。尝试注入它(角度使测试更容易的方式)。通过不依赖您尝试测试的服务或控制器中的外部资源。检查 DI 依赖注入。或者查看上面的视频链接。干杯。
      猜你喜欢
      • 2019-09-08
      • 1970-01-01
      • 2020-10-18
      • 2013-07-04
      • 2018-05-24
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多