新火力基地的Firebase角火

时间:2016-05-20 07:02:48

标签: angularjs firebase angularfire firebase-realtime-database

我有一个角度应用程序,它使用angularFire库。 firebase文档中声明支持angularfire https://firebase.google.com/support/guides/firebase-web#update_your_firebase_libraries_numbered

我已将firebase和angularfire更新为最新版本。

之前://这有效:-)

L

AFTER://这不起作用: - (

    // *** DataService ***

    var root = new Firebase(FIREBASE_URL);         

    var service = { 
        root: root, 
        items: root.child('items'), 
        tastings: root.child('tastings'), 
        users: root.child('users'), 
        votes: root.child('votes') 
    };

    return service;

    // *** Controller ***

    $scope.tastings = $firebaseArray(dataService.tastings); 

我得到的错误:"必须将有效的Firebase引用传递给$ firebase(不是字符串或网址)"

当我评估dataService.tastings时,它看起来像是Chrome控制台中的firebase引用,尽管已经添加了像database这样的新属性。

3 个答案:

答案 0 :(得分:2)

AngularFire现已正式更新,以支持Firebase 3.x.x:)

答案 1 :(得分:1)

是的,Google新的firebase 3及更高版本支持AngularFire。

除此之外,您还可以获得详细的文档: GitHub:https://github.com/firebase/angularfire

答案 2 :(得分:0)

我在我的一个项目中使用了最新版本并且工作正常,所以你应该有这样的东西:

/// Main configuration of Firebase

    var config = {
        apiKey: "AIzaSyDcPq_z9vh4CidkzFDyerRK0ZS7gs2Sj14",
        authDomain: "citytimer-90920.firebaseapp.com",
        databaseURL: "https://citytimer-90920.firebaseio.com",
        storageBucket: "citytimer-90920.appspot.com",
        messagingSenderId: "497040832817"
    };
    firebase.initializeApp(config);

这部分是纯 Javascript ,因此您无需将其包含在Angular文件中。

然后这些是我正在使用的Angular文件。

/// Database service

    function firebaseDataService() {
        var root = firebase.database().ref();

        var service = {
            root: root,
            requests: root.child('requests'),
            places: root.child('places')
        };

        return service;
    }

正如您所看到的,我的服务与您的相似。

/// Specific service to retrieve data

function cityTimerService($firebaseArray, firebaseDataService, $firebaseObject, $rootScope, $q, $http) {

        var service = {
            getRequestsByUser: getRequestsByUser,
        };

        return service;

        function getRequestsByUser(uid) {
            if (!requests) {
                requests = $firebaseArray(firebaseDataService.requests.child(uid).child('userRequests'));
            }
            return requests;
        }
}

基本上,您不再需要提供FIREBASE_URL,因为它是配置对象的一部分。对于记录,您可以从Firebase控制台获取此配置对象。

如果您想仔细查看我在项目中的代码,您可以here进行操作。