Firebase超时的云功能 [英] Cloud Functions for Firebase timeout

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

问题描述

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

Simple cloud function to get database data is not working.

getusermessage()不起作用

错误:

函数执行耗时60002毫秒,状态为:超时"

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();
  });
});  
});

你在做什么错了?

推荐答案

您没有说三个函数中的哪个超时了,但我会猜测哪个.您的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.

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

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