【问题标题】:firestore cloud functions not triggeringfirestore 云功能未触发
【发布时间】:2020-05-28 10:41:21
【问题描述】:

我是 Firebase 云功能的新手。因此,我按照 firebase youtube 频道中的教程进行操作。 所以,我创建了一个在添加firestore文档时应该触发的函数,但它没有触发。

这是函数

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp();

exports.whenAddData = functions.firestore
  .document("chats/{userId}")
  .onCreate((change, context) => {
    const msg = change.data().msg;
    const modifiedMsg = addImoji(msg);
    console.log("data changing");
    return change.ref({ msg: modifiedMsg });
  });

const addImoji = (msg) => {
  return msg.replace(/\bPizza\b/g, " ???? ");
};

firebase-functions 版本:“^3.6.1”

firestore 数据库截图

【问题讨论】:

  • 添加你的数据库截图
  • 添加截图
  • 你没有得到console.log("数据变化"); ?
  • 嘿,我没有得到控制台日志
  • 还检查了函数日志

标签: node.js firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

首先,您的正则表达式是错误的。它区分大小写,这意味着屏幕截图中的消息“我喜欢披萨”与“披萨”不匹配。为了使其不区分大小写(从而匹配“Pizza”、“pizza”、“piZZA”...),请在末尾添加 i 标志:

const addImoji = (msg) => {
  return msg.replace(/\bpizza\b/gi, "?");
};

其次,您的函数返回一个数据库引用。它实际上并没有通过调用set()update() 来存储新数据。你的代码应该是:

return change.ref.update({ msg: modifiedMsg });

任何异步 Firebase 函数都应该返回一个承诺(update() 返回一个承诺)。否则,函数将无法正确终止。

通过返回update的结果,您的函数将继续运行,直到将新的msg写入数据库的异步工作完成。

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 2021-04-08
    • 2021-11-27
    • 1970-01-01
    • 2020-12-06
    • 2021-05-13
    • 2021-09-14
    相关资源
    最近更新 更多