我正在寻找一种解决方案,使以下代码触发字段值onUpdate
,而不是整个文档。
是否可以使用firebase-functions
包来侦听字段值,比如说一个带有时间戳的字段,称为lastUpdate
?或者,我倾向于使用axios
通过onClick
调用HTTP
触发器,但找不到任何有助于我理解的资源、文档或教程。如果你知道的话,我很想读一读。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const sgMail = require('@sendgrid/mail');
try {
admin.initializeApp();
} catch (e) {
console.log(e);
}
var SENDGRID_API_KEY = functions.config().sendgrid.key;
sgMail.setApiKey(SENDGRID_API_KEY);
exports = module.exports = functions.firestore
.document('users/{id}')
.onUpdate(snap => {
const user = snap.data();
const msg = {
to: user.email,
from: 'example@example.com',
templateId: 'd-6c0e0385808c480ab475748a6eeed773',
dynamic_template_data: {
firstName: user.firstName,
email: user.email,
id: user.id
}
};
return sgMail.send(msg).catch(err => console.log(`${user.email} - ${err}`));
});
Cloud Firestore 在文档级别触发云函数。没有选项可以仅在文档中的特定字段发生更改时触发函数。如果希望触发器具有该粒度级别,请考虑使用实时数据库。