以下是我想要运行的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];
});
});
答案 0 :(得分:2)
Cloud Functions是Firebase的一部分,允许您在服务器上运行代码,因此代码独立于任何用户。
本地,没有办法“安排”运行的函数(函数由数据库更改,https请求等触发),但是这篇博文提供了一个解决方案:https://firebase.googleblog.com/2017/03/how-to-schedule-cron-jobs-with-cloud.html