【问题标题】:I made a function and for some reason it is not being called. I was able to deploy it我做了一个函数,由于某种原因它没有被调用。我能够部署它
【发布时间】:2018-04-15 02:38:13
【问题描述】:

大家好,我是 Firebase 的新手。我做了一个函数,由于某种原因它没有被调用。我能够部署它。我想要做的是,每次我更改一个值时,我的 slack 都会收到通知,但是当我添加一个值/文档时,什么也没有发生。我查看了这些函数,它们根本没有被调用。

const functions = require('firebase-functions');
var request = require("request");
const admin = require('firebase-admin');
admin.initializeApp();

exports.notifyNewRecord = functions.firestore
    .document('stallion/{userId}')
    .onCreate((snap, context) => {
      const newValue = snap.data();
      const name = newValue.name;
      const points = newValue.points;

    return request.post(
      "https://hooks.slack.com/I have my slack id here in the code",
      {json:{text: `<${user} received ${points} point for an excepted answer>.`}}
    )

我的数据库结构是这样的,数据库然后是种马文件,记录就对了,文件名:xxxx,分:xxxx。我正在使用 Firestore 的免费层,不知道这是否重要。我在我的数据库函数中看到该函数,任何帮助将不胜感激。

【问题讨论】:

  • 您在日志中看到什么了吗?
  • @RenaudTarnec 因此,由于某种原因,我现在在日志中看到了一些东西,但在我没有定义用户之前,我遇到了一个问题,我定义了名称,见上面还有一些其他的松弛错误。
  • 我认为你不能在 firebase 的免费层发出出站请求
  • 好的,所以在计划升级之外,我认为您可能想要完成您正在发出的 POST 请求而不是返回它。因此,您可能会等待该请求完成,然后该 HTTP 请求被解析(成功或错误),然后将其作为请求的状态返回。
  • @AaronRabinowitz 感谢投票!希望这对您有所帮助并为您解决!你在这里绝对是在正确的轨道上

标签: firebase google-cloud-firestore google-cloud-functions firebase-admin


【解决方案1】:

您正在使用 onCreate 触发器,该触发器仅在“stallion”集合中创建新文档时触发。它不会触发对现有文档的更改。为此,您需要在 onWrite 触发器上使用 onUpdate。请务必阅读documentation for Firestore triggers 以更好地了解它们的工作原理。

【讨论】:

  • 如果你能告诉我如何检查我正在尝试做的文档是否已创建,我会给你这个答案
【解决方案2】:

如果函数已被调用,则 Fire-base 函数选项卡需要一段时间才能上传。此外,您不能在 Nicholas Pesa 提到的免费套餐中拨打电话。上面的代码中至少有一个错误,调用里面的用户是未定义的,应该是名字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2020-10-02
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多