【问题标题】:Firebase Cloud Functions Not RunningFirebase 云功能未运行
【发布时间】:2017-12-25 15:05:37
【问题描述】:

我从Firebase Cloud Functions 收到了一些意外行为,似乎下面的函数没有运行。我的期望是/posts 端点中的数据将被记录到控制台。我在部署函数时没有收到任何错误。

该函数用于客户端/用户不参与的仅后端操作,因此如果不设置另一个服务器来调用端点,则基于数据库事件或https 的触发器对我不起作用。

下面有什么原因不记录吗?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);


 getScheduledPosts = () => {
           admin.database().ref("/posts")
          .orderByKey()
          .once("value")
          .then( (snapshot) => {
              console.log(snapshot);
           })
           .catch(err => {console.log(err)});
          console.log("Posts Ran")
      }

  // Call this function 
  getScheduledPosts();

【问题讨论】:

    标签: arrays firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    您根本没有在这里定义云函数。因为您没有定义任何云函数,所以您编写的代码将永远不会运行。您必须从 index.js 中导出一个,并且必须使用 firebase-functions SDK 构建其定义。如果您尝试创建database trigger(一定要阅读那里的文档),它看起来像这样:

    exports.makeUppercase = functions.database.ref('/posts/{id}')
        .onWrite(event => {
      // do stuff here
    })
    

    不要试图做在部署函数时应该运行的“一次性”工作。这不是 Cloud Functions 的工作方式。函数旨在响应项目中发生的事件而运行。

    【讨论】:

    • 我只是在尝试解决问题时调用该函数来检查它是否正在运行。我有第二个功能作为出口,但那是在运行
    • 补充一下,该函数仅用于后端操作,因此我想要一种从后端环境而不是客户端请求中根据需要调用它的方法。云功能不可能做到这一点吗?
    • 如果您想在您选择的时间按需调用某个函数,请使用 HTTPS 函数,然后 ping 它的 URL。根据需要保护该端点。
    • 从后端调用的另一种方法是使用 onUpdate 触发 Firebase 上的文档。我设置了一个“管理员”集合并有一个“更新”文档。 My Cloud Function 然后触发对该特定文档的 onUpdate。您可以从 Firebase 控制台手动更改它,也可以从连接到同一数据库的完全不同的管理应用程序调用它。 exports.updateItems = functions.database.ref('/update').onUpdate(event => {
    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 2020-11-02
    • 2021-10-26
    • 1970-01-01
    • 2021-11-27
    • 2017-08-03
    相关资源
    最近更新 更多