1

Je veux commencer par dire que j'ai montré cela à d'autres développeurs qui n'ont aucune idée de ce qui ne va pas.Firebase Cloud Fonctions Jeton inattendu sur le code copié à partir de la fonction de travail précédente?

J'ai quelques fonctions Cloud avec Firebase, et toutes les autres fonctionnent. Cependant, lorsque j'essaie d'ajouter une autre fonction et que j'accède simplement à la même base de données en utilisant le même code que les autres fonctions, j'obtiens un «jeton inattendu». Erreur. Voici mon code:

exports.activateLatestDormantGame = functions.https.onRequest((request, response) => { 
    var database = admin.database().ref(); 
    var gamesDatabase = database.child('games'); 
    var gameNum; 

    var gamesDatabaseQuery = gamesDatabase.orderByKey().limitToFirst(1); 
    gamesDatabaseQuery.once('child_added').then((latestGame) => { 
     gameNum = parseInt(latestGame.getKey()); 
     gamesDatabaseQuery.off('child_added'); 
    }).then(() => { 
      gamesDatabase.child(gameNum.toString()).child('isActive').set('true'); 
     response.end(); 
    }); 
}); 

exports.tallyVotes = functions.https.onRequest((request, response) => { 
    var database = admin.database().ref(); 

    var gamesDatabaseQuery = database.child('games').orderByKey().limitToFirst(1); 

    gamesDatabaseQuery.once('child_added').then((latestGame) => { 
     return parseInt(latestGame.getKey()); 
    }).then((latestGameKey) => { 
     var gameDatabaseRef =  database.child('games').child(latestGameKey.toString()); 
     var numTeams =  gameDatabaseRef.child('teams').child('numTeams').val(); 
     var votes = []; 
     for (team in numTeams) { 
      var tallyString = gameDatabaseRef.child('answers').child(team.toString()).val(); 
      var tallyArray = tallyString.split(','); 
      var highestVote = 0; 
      for (vote in tallyArray) { 
       if (parseInt(vote) > highestVote) { 
        highestVote = parseInt(vote); 
       } 
      } 
      votes.push(highestVote); 
     } 

     var questionsAskedString = gamesDatabaseRef.child('questionsAsked').val(); 
     var questionsAskedArray = questionsAskedString.split(','); 
     var latestQuestion = questionsAskedArray[questionsAskedArray.length - 1]; 

     return [latestQuestion, votes, latestGameKey]; 
    }).then(returnArray) => { 
     var answer = database.child('questionDatabase').child(returnArray[0]).child('answerIndex').val(); 
     var correctTeams = []; 
     for (var i = 0; i < returnArray[1].length; i++) { 
      if (returnArray[1][i] == answer) { 
       correctTeams.push(i); 
      } 
     } 
     database.child('games').child(returnArray[2]).child('correctTeams').set(correctTeams.join(',')); 
     response.end(); 
    }); 
}); 

Et voici l'erreur:

Error: Error occurred while parsing your function triggers. 

/private/var/folders/zm/qyfsj2ms2yd0w2t748s_v16m0000gn/T/fbfn_8186jLVALtYUfzf1/index.js:48 
gamesDatabaseQuery.once('child_added').then((latestGame) => { 
       ^

SyntaxError: Unexpected token . 
    at createScript (vm.js:74:10) 
    at Object.runInThisContext (vm.js:116:10) 
    at Module._compile (module.js:588:28) 
    at Object.Module._extensions..js (module.js:635:10) 
    at Module.load (module.js:545:32) 
    at tryModuleLoad (module.js:508:12) 
    at Function.Module._load (module.js:500:3) 
    at Module.require (module.js:568:17) 
    at require (internal/module.js:11:18) 
    at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:18:11 

I inclus la fonction activateLatestGame pour montrer que je suis réutilisez code et il ne fonctionne pas. Je ne sais même pas quel est le problème ici, toute aide est grandement appréciée.

À la votre!

Répondre

0

Il vous manque un ( dans cette ligne:

}).then(returnArray) => { 

devrait être:

}).then((returnArray) => { 
+0

Incroyable ... Merci beaucoup, qui se révéla être la question. –