firebase函数将整数转换为对象



iOS客户端调用具有以下参数的函数:

func buyTicket(contestId: String, points: Int) -> SignalProducer<Void, Error> {
Functions.functions().httpsCallable("myFunction").call([
"userId": Auth.auth().currentUser!.uid,
"points": points,
"contestId": contestId

], completion: ...

然后在函数的开头,我有这个日志

const userId = req.body.data.userId;
const contestId = req.body.data.contestId;
const points = req.body.data.points;
console.log(`myFunction called with userId: ${userId} contestId: ${contestId} points: ${points}`);

打印的是

myFunction用userId:BzoW5pWLbWRnd2UgIntkfd3xfNf2 contestId:pBsQo0FHMyu4ay18exy points调用:[object object]

为什么要将点转换为对象?当我试图将点传递给FieldValue.increment时,这导致我的函数崩溃

看起来像是将HTTP云函数实现与可调用云函数的调用混合在一起。这两种类型的函数不相同,也不兼容。

要从应用程序中调用HTTP函数,您将从Swift代码中执行常规HTTP请求。例如,如何在Swift中发出HTTP请求?

如果你想保持你的Swift代码不变,你必须将你的服务器端实现为一个可调用的云函数。这意味着声明看起来像:

exports.myFunction = functions.https.onCall((data, context) => {
...
});

然后得到参数为data.userIddata.points等。

相关内容

  • 没有找到相关文章

最新更新