Ошибка развертывания Firebase: «Произошла ошибка при анализе триггеров вашей функции» - PullRequest
0 голосов
/ 03 июля 2018

У меня возникла ошибка при развертывании функции как «произошла ошибка при разборе триггеров вашей функции» и синтаксическая ошибка в строке firestore.collection('orders').get() как syntax error: unexpected token '.'. Моя версия узла v8.11.3. Я попробовал команду обновить версию моего узла: npm install -g firebase-tools@latest но ошибка остается прежней. Вы можете помочь мне с этим? Это мой код.

const functions = require('firebase-functions');
var admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
var firestore = admin.firestore();

exports.webhook = functions.https.onRequest((request, response) => {

    console.log("request.body.result.parameters: ", request.body.result.parameters);
    switch(request.body.result.action)
    {
        case'bookhotel':
            let params = request.body.result.parameters;

            firestore.collection('orders').add(params)
            .then((docRef) => {

                console.log("docRef: ", docRef);
                response.send({
                    speech:
                        `${params["name"]} your hotel booking request for ${params["room-type"]} room is forwarded for ${params["persons"]} persons,
                     we will contact you on ${params["email"]} soon.`

                });
                return;
            })
            .catch((e => {
                console.log("error:", e);
                response.send({
                    speech: "something went wrong when writing on database"
                });
            }))
        break;
        case'showbooking':
            firestore.collection('orders').get()
            .then((querySnapshot))=>{
                var orders=[];
                querySnapshot.forEach((doc)=>{orders.push(doc.data()) });

                var speech=`you have ${orders["length"]} orders \n`;

                orders.forEach((eachOrder,index)=>{
                    speech=`number ${index+1} is ${eachOrder["room-type"]} room for
                         ${eachOrder["persons"]} persons, ordered by ${eachOrder["name"]},
                         contact email is ${eachOrder["email"]}`
                    })
                    response.send({
                        speech:speech
                    });
                })
                .catch((err)=>{
                    console.log('error getting documents',err);

                    response.send({
                        speech: "something went wrong when reading from database"
                    })
                })
        break;

        default:
            response.send({
                speech:"no action matched in webhook"
            })
    }
});

1 Ответ

0 голосов
/ 03 июля 2018

Я скопировал ваш код в VS Code, и он дал мне другие ошибки.

Во-первых, вам нужны фигурные скобки вокруг блоков. Вместо этого:

switch (thing) {
    case 'option1':
        statement;
        statement;
        break:
}

Это должно быть так:

switch (thing) {
    case 'option1': {
        statement;
        statement;
        break:
    }
}

Обратите внимание на фигурные скобки, окружающие блок операторов.

Также у вас есть слишком много скобок в этой строке:

.then((querySnapshot))=>{

Это должно быть:

.then((querySnapshot)=>{

После этого код компилируется нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...