【问题标题】:Trigger Firebase function onUpdate of document field value触发 Firebase 函数 onUpdate 文档字段值
【发布时间】:2019-03-29 01:45:28
【问题描述】:

我正在寻找一种解决方案,使以下代码触发字段值的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}`));
  });

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助。我得出的结论大致相同,但我想我会问,以防有一些解决方法。为了解决我的问题,我为用户警报创建了一个单独的doc,然后使用onUpdate 将我的字段带入此doc 以触发send(msg)。再次感谢您的澄清。
    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 2018-07-29
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多