我按照本教程:https://angularfirebase.com/lessons/sendgrid-v3-nodejs-transactional-email-cloud-function/发送转发电子邮件。下一个功能正常工作,但谷歌云功能https://firebase.google.com/docs/functions/beta-v1-diff#cloud-firestore的新更新已停止工作。我应该改变什么?
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const SENDGRID_API_KEY = functions.config().sendgrid.key
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(SENDGRID_API_KEY);
exports.firestoreEmail = functions.firestore
.document('mensajes/{mensajeId}')
.onCreate(event => {
const mensajeId = event.params.mensajeId;
const db = admin.firestore()
return db.collection('mensajes').doc(mensajeId)
.get()
.then(doc => {
const mensaje = doc.data()
const msg = {
to: 'xx@xx.com',
from: 'zz@zz.com',
subject: 'Subject',
templateId: 'myTemplateID',
substitutionWrappers: ['{{', '}}'],
substitutions: {
nombre: mensaje.nombre,
telefono: mensaje.telefono,
email: mensaje.email,
mensaje: mensaje.mensaje
}
};
return sgMail.send(msg)
})
.then(() => console.log('email sent!'))
.catch(err => console.log(err))
});
答案 0 :(得分:0)
在Cloud Functions 1.0.x发布之后,Firestore的更改如下,因为您可以从doc推断:
之前(< = v0.9.1)
exports.dbCreate = functions.firestore.document('notes/{noteId}').onCreate((event) => {
const newData = event.data.data();
const param = event.params.noteId;
});
现在(v1.0.0)
exports.dbCreate = functions.firestore.document('notes/{noteId}').onCreate((snap, context) => {
const newData = snap.data();
const param = context.params.noteId;
});
因此,在您的情况下,这意味着您的Cloud功能将更改为:
exports.firestoreEmail = functions.firestore
.document('mensajes/{mensajeId}')
.onCreate(event => {
const mensajeId = context.params.mensajeId; // <- Here is the change
const db = admin.firestore()
return db.collection('mensajes').doc(mensajeId)
.get()
.then(doc => {...
.....
答案 1 :(得分:-1)
本教程演示如何使用Cloud Functions通过SendGrid平台发送电子邮件,通过webhooks接收SendGrid分析数据,并将分析数据加载到Google BigQuery进行分析。