【问题标题】:Cloud Function Firebase, error sending value backCloud Function Firebase,返回值时出错
【发布时间】:2017-10-21 15:00:06
【问题描述】:

我正在尝试从 firebase 发回简单值,但出现如下错误

我的代码是:

exports.getTotalPrice = functions.https.onRequest((req, res) => {
  admin.database().ref('carresult').once('value').then(function(snapshot) {
    var totalPrice = snapshot.val().price;
    res.status(200).send(totalPrice);
  });

});

ps。错误 65000 是我需要它发回的值。

【问题讨论】:

    标签: firebase httprequest google-cloud-functions


    【解决方案1】:

    Express documentation for res.send([body]) 表示:

    body 参数可以是 Buffer 对象、String、对象或 数组

    在您的数据库中,/carresult/price 可能存储为一个数字,从而使totalPrice 成为send() 的无效参数。您的选择是将其存储为String,然后将其转换为String,然后再传递给send(),或者留下一个数字并将其作为对象的属性发送回:send({price: totalPrice})

    exports.getTotalPrice = functions.https.onRequest((req, res) => {
      admin.database().ref('carresult').once('value').then(function(snapshot) {
        var totalPrice = snapshot.val().price;
        res.status(200).send(String(totalPrice)); // <= ADDED String()
      });
    });
    

    另请注意,在 HTTPS 函数中执行数据库读取(异步)是有风险的,正如 Frank van Puffelen 在 this answer 中解释的那样:

    请注意,这是一个棘手的模式。对数据库的调用发生 异步的,可能需要一些时间才能完成。在等待时 即,HTTP 函数可能会超时并被 Google 终止 Cloud Functions 系统...作为一般规则,我建议使用 Firebase 数据库 SDK 或其 REST API 来访问数据库,而不是依赖 HTTP 函数作为中间件。

    【讨论】:

    • 非常感谢,数据以字符串形式发回给我。
    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 2020-04-29
    • 2017-12-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2019-07-18
    相关资源
    最近更新 更多