问题描述
我真的无法弄清楚此函数有什么问题,因为它说res.send不是一个函数
exports.createEphemeralKeys = functions.https.onCall((req,res) => {
console.log("this is the req",req)
var api_version = req["api_version"];
var customer_id = req["customer_id"]
var api_version1 = "2018-08-23"
// var customerId = req.body.customer_id;
console.log("apiver",api_version)
console.log("customer id ",customer_id)
if (!api_version) {
res.status(400).end();
return;
}
const key = stripe.ephemeralKeys.create(
{customer: customer_id},{apiVersion: api_version1}
).then((key) => {
// asynchronously called
console.log("creating key ",key)
res.send(key);
return key
}).catch(err =>{
console.log(err);
});
});
TypeError:res.send不是函数
我该如何解决?
解决方法
我认为您编写了错误的代码库。
functions.https.onCall
。此方法有两个参数。数据和上下文,其中context是这样的可选参数:
exports.fullName = functions.https.onCall((data,context) => {
});
但是您尝试将其用作响应。 因此,我建议您使用https.onRequest而不是onCall,这样您就可以使用响应了。
,您需要使用res.end而不是res.send原因Res.send是Express的一部分
,这似乎是一个Firebase函数调用,因此要发送回响应,您可以只返回要发送回的内容(已经在执行)。
只需从函数中取出res.send
(第二个参数是context
而不是res
)。
context
保存有关用户身份验证的信息。
更多信息在这里-https://firebase.google.com/docs/functions/callable