Ошибка справочника функций firebase с функцией sendgrid

Я пытаюсь начать работу с SendGrid и базой данных Firestore, используя функции Firebase. Я прошел через учебные пособия и настроил в соответствии с последними обозначениями (привязка, контекст) вместо (событие). Я не могу понять, что не так с этим скриптом:

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access the Firebase Realtime Database. 
const admin = require('firebase-admin');
admin.initializeApp();
//admin.initializeApp(functions.config().firebase);

const SENDGRID_API_KEY = my-api-key-is-here;

const sendgridemail = require('@sendgrid/mail');
sendgridemail.setApiKey(SENDGRID_API_KEY);

exports.confEmail = functions.firestore
    .document('clients/{clientId}/projects/{projectId}/form-data/{docId}') //any write to this node will trigger email
    .onCreate((snap, context) => {
        const clientId = context.params.clientId;
        const projectId = context.params.projectId;
        const docId = context.params.docId;
        const fsdb = admin.firestore();
        return fsdb.collection('clients/'+clientId+'/projects/'+projectId+'/form-data').doc(docId)
                 .get()
                 .then(doc => {

                    const docData = doc.data()

                    const msgbody = {
                        to: docData.EMAIL,
                        from: 'xxxxx@gmail.com',
                        subject:  'Form Submission Confirmation',
                        templateId: 'd-07bf6a2b89084951a30ceddcd9c8915f',
                        substitutionWrappers: ['{{', '}}'],
                        substitutions: {
                          formdata: "Message Body\n<br>"+docData.CONF_MSG
                        }
                    };

                    return confEmail.send(msgbody)
                })
                .then(() => console.log('confimration mail sent success') )
                .catch(err => console.log(err) )
    });

Сообщение об ошибке, созданное в консоли Firebase, загадочно, и я даже не знаю, как его интерпретировать.

ReferenceError: confEmail is not defined
    at fsdb.collection.doc.get.then.doc (/user_code/index.js:48:13)
    at process._tickDomainCallback (internal/process/next_tick.js:135:7

)

Насколько я понимаю, моя функция confEmail не определена, потому что в ней есть ошибка, но я не могу понять, что именно. Или это еще что-то значит?

1
0
119
1

Ответы 1

Похоже, что большинство сценариев учебника слишком усложняют. и более простой сценарий вроде этого работает.

const sendgrid = require('@sendgrid/mail');
sendgrid.setApiKey(SENDGRID_API_KEY);

exports.confEmail = functions.firestore
    .document('clients/{clientId}/projects/{projectId}/form-data/{docId}') //any write to this node will trigger email
.onCreate((snap, context) => {

    const docData = snap.data();

    const msgbody = {
        to: docData.EMAIL,
        from: 'xxxxxxx@gmail.com',
        subject:  'Form Submission Confirmation',
        templateId: 'd-07bf6a2b89084951a30ceddcd9c8915f',
        substitutionWrappers: ['{{', '}}'],
        substitutions: {
          formdata: docData.CONF_MSG
        }
    };

    return sendgrid.send(msgbody)

});

Другие вопросы по теме