Cloud Functions for Firebase 超时

Cloud Functions for Firebase timeout

获取数据库数据的简单云功能无法正常工作。

getusermessage() 不工作

错误:

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

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

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 秒(默认情况下)以生成响应,如果没有,它将终止该函数并在日志中留下该消息。

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

您可以在函数声明期间使用runWith设置超时和内存,

exports.getUserMessage = functions.runWith({ memory: '2GB', timeoutSeconds: 360 }).https.onRequest(