代码之家  ›  专栏  ›  技术社区  ›  Damn Vegetables

云函数写入Firebase实时数据库超时[重复]

  •  3
  • Damn Vegetables  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  3
  •   Grimthorr Roland77    6 年前

    由HTTP请求触发的云功能需要通过以 send() , redirect() end() ,否则它们将继续运行并达到超时。

    terminate HTTP functions section of the documentation on HTTP triggers :

    始终以结束HTTP函数 发送() , 重定向() 结束() . 否则,您的函数可能会继续运行并被系统强制终止。另请参见 Sync, Async and 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!");
    })