функция firebase преобразует целое число в объект - PullRequest
0 голосов
/ 12 июля 2020

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: BzoW5pWLbWRnd2UgjnTkfd3xfNf2 contestId: pBsQo0FHMyu4ay18dexy points: [object Object]

почему очки конвертируются в объект? Это заставляет мою функцию cra sh, когда я пытаюсь передать точки FieldValue.increment

1 Ответ

1 голос
/ 12 июля 2020

Похоже, вы смешиваете реализацию HTTP Cloud Function с вызовом Callable Cloud Function . Эти два типа функций не совпадают и несовместимы.

Чтобы вызвать HTTP-функцию из вашего приложения, вы выполните обычный HTTP-запрос из вашего кода Swift. Так, например, с Как мне сделать HTTP-запрос в Swift?

Если вы хотите сохранить свой код Swift таким же, вам придется реализовать свою серверную часть как вызываемая облачная функция . Это означает, что объявление выглядит так:

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

И вы получаете параметры как data.userId, data.points, et c.

...