云函数写入Firebase实时数据库超时

3

我一获取URL就能看到新条目被添加了,但是请求却挂起并超时。为什么呢?

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.add = functions.https.onRequest((request, response)=>
{
    var ref = admin.database().ref("jobs");
    var childRef = ref.push();
    childRef.set
    (
        {
            title: "test",
            pay: 100
        }
    );
})

代码基于以下示例:https://firebase.google.com/docs/database/admin/save-data 结果
{"error":{"code":500,"status":"INTERNAL","message":"function execution attempt timed out"}}
1个回答

4
云函数通过HTTP请求触发时,需要使用send()redirect()end()来结束它们,否则它们将继续运行并达到超时时间。
终止HTTP函数部分的HTTP触发器文档中得知:

始终用send()redirect()end()来结束HTTP函数。否则,您的函数可能会继续运行,并被系统强制终止。请参见同步、异步和Promises

因此,在您的示例中,您可以通过发送响应来结束请求:
exports.add = functions.https.onRequest((request, response)=>
{
    var ref = admin.database().ref("jobs");
    var childRef = ref.push();
    childRef.set
    (
        {
            title: "test",
            pay: 100
        }
    );
    response.status(200).send("OK!");
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接