云功能Firebase,错误发送值返回

时间:2017-05-22 04:22:02

标签: firebase httprequest google-cloud-functions

我正在尝试从firebase发回简单值,但错误显示为enter image description here

mycode是:

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是我需要它发回的值。

1 个答案:

答案 0 :(得分:2)

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

  

body参数可以是Buffer对象,String,对象或   阵列

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

send({price: totalPrice})

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

  

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