Cloud Functions for Firebase 超时 [英] Cloud Functions for Firebase timeout

查看:31
本文介绍了Cloud Functions for Firebase 超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

获取数据库数据的简单云功能不起作用.

Simple cloud function to get database data is not working.

getusermessage() 不工作

错误:

函数执行耗时 60002 毫秒,完成状态为:'timeout'

Function execution took 60002 ms, finished with status: 'timeout'

Index.JS 用于获取数据库结果.

Index.JS for getting database result.

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const cors = require('cors')({origin: true});

// Take the text parameter passed to this HTTP endpoint and insert it into the
// Realtime Database under the path /messages/:pushId/original
exports.addMessage = functions.https.onRequest((req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into the Realtime Database using the Firebase Admin SDK.
  admin.database().ref('/messages').push({original: original}).then(snapshot => {
    // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
    res.redirect(303, snapshot.ref);
  });
});

// Listens for new messages added to /messages/:pushId/original and creates an
// uppercase version of the message to /messages/:pushId/uppercase
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
    .onWrite(event => {
      // Grab the current value of what was written to the Realtime Database.
      const original = event.data.val();
      console.log('Uppercasing', event.params.pushId, original);
      const uppercase = original.toUpperCase();
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to the Firebase Realtime Database.
      // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
      return event.data.ref.parent.child('uppercase').set(uppercase);
    });

var db = admin.database();
exports.getUserMessage = functions.https.onRequest((req, res) => {
var query = db.ref("messages").orderByKey();
query.once("value")
  .then(function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      var key = childSnapshot.key;
      // childData will be the actual contents of the child
      var childData = childSnapshot.val();
  });
});  
});

O 做错了什么?

推荐答案

你没有说你的三个函数中的哪一个超时了,但我会猜一下哪个.您的 HTTPS 函数 getUserMessage 未生成对客户端的响应.Cloud Functions 将等待 60 秒(默认情况下)以生成响应,如果没有,它将终止该函数并将该消息留在日志中.

You didn't say which of your three functions is timing out, but I'll take a guess at which one. Your HTTPS function getUserMessage isn't generating a response to the client. Cloud Functions will wait for 60 seconds (by default) for it to generate a response, and if it doesn't, it will kill the function and leave that message in the log.

HTTPS 函数中的每个代码路径都应该对客户端产生一些响应.

Every code path in an HTTPS function should generate some response to the client.

这篇关于Cloud Functions for Firebase 超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆