如何在没有签署用户的情况下在firebase中运行代码

时间:2017-11-13 18:19:07

标签: javascript firebase web-applications firebase-realtime-database

以下是我想要运行的JS代码:

var orderedPlayers = databaseService.s.child("playerweek2").orderByChild("id"); 
    $firebaseArray(orderedPlayers)
            .$loaded(function(loadedPlayers) {
            var normalizedPlayers = loadedPlayers.reduce(function(acc, next) { acc[next.id] = next; return acc; }, {});
            var selectedPlayers = $scope.pick.map(function(num){
                return normalizedPlayers[num];
            });
            $scope.players = selectedPlayers;

                        $scope.sum = function(items, prop){
                        return items.reduce( function(a, b){
                        return a + b[prop];
                        }, 0);
                        };
                        $scope.$watch('players', function (newValue, oldValue) {
    $scope.totalPoints = $scope.sum(newValue, 'goals');
    userRef.set($scope.totalPoints);

},true);

有没有办法在没有用户登录的情况下,每周在一周的设定时间运行此代码?问题是用户需要登录才能运行代码,但我的目标是让代码运行,无论用户是否登录。这可能在firebase上吗?

以下是我尝试失败的原因:

   exports.update = functions.database.ref('/Player')
   .onWrite(event=>{
    var pick=firebase.database().ref("users").child(user.uid).child("selection");
     $firebaseArray(Players)
        .$loaded(function(loadedPlayers) {
        var normalizedPlayers = loadedPlayers.reduce(function(acc, next) 
         { acc[next.id] = next; return acc; }, {});
        var selectedPlayers = $scope.pick.map(function(num){
            return normalizedPlayers[num];
        });
    });

1 个答案:

答案 0 :(得分:2)

Cloud Functions是Firebase的一部分,允许您在服务器上运行代码,因此代码独立于任何用户。

本地,没有办法“安排”运行的函数(函数由数据库更改,https请求等触发),但是这篇博文提供了一个解决方案:https://firebase.googleblog.com/2017/03/how-to-schedule-cron-jobs-with-cloud.html