触发Firebase函数onUpdate文档字段值

时间:2018-10-24 15:11:29

标签: javascript firebase google-cloud-firestore google-cloud-functions sendgrid

我正在寻找一种解决方案,以使以下代码触发字段值而不是整个文档的onUpdate

是否可以使用firebase-functions包来监听字段值,比如说一个带有时间戳记的字段lastUpdate?另外,我倾向于使用HTTP通过onClick调用的axios触发器,但是找不到任何有助于我理解的资源,文档或教程。如果您有任何了解,我很乐意阅读。

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}`));
  });

1 个答案:

答案 0 :(得分:2)

Cloud Firestore在文档级别触发Cloud Functions。没有选项仅在文档中的特定字段发生更改时才触发功能。如果您希望触发器具有该级别的粒度,请考虑使用实时数据库。