Облачные функции Google: вернуть верный JSON - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь вызвать облачную функцию Google из моего приложения Flutter с помощью пакета cloud_functions.

Это моя облачная функция:

export const helloWorld = functions.region('europe-west1').https.onRequest((request, response) => {
response.status(200).json({
    message: "Hello World!"
  });
});

И это мой метод трепетания, который вызывает эту функцию:

try {
  final dynamic resp =
      await CloudFunctions.instance.call(
    functionName: "helloWorld"
  );
  print(resp);

} on CloudFunctionsException catch (e) {
  ...
} catch (e) {
  ...
} finally {
  ...
}

Как видите, это самая простая форма запроса без каких-либо параметров.

Моя проблема: Каждый вызов функции Cloud приводит к исключению CloudFunctionsException. Причина: " Ответ не является допустимым объектом JSON. ".

Может быть, у кого-то есть идея, что здесь происходит не так? Если я вызываю облачную функцию через Postman или браузер, возвращается действительный объект JSON, и исключение не выдается.

Заранее спасибо, Michael

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Я мог бы найти ошибку: Как только вы определите другой регион, который является регионом по умолчанию, пакет flutter cloud_functions, похоже, больше не сможет найти функцию:

Работает:

export const helloWorld = functions.https.onCall((data, context) => {
    return {
        message: "Hello World"
    }
});

Не работает:

export const helloWorld = functions.region('europe-west1').https.onCall((data, context) => {
    return {
        message: "Hello World"
    }
});
0 голосов
/ 06 января 2019

Если вы хотите использовать Flutter SDK для вызова вызываемой функции, вам необходимо определить вызываемую функцию. Прямо сейчас вы объявляете HTTP-функцию, которая не совпадает. Прочтите документацию для вызываемых функций , чтобы узнать, как объявлять и реализовывать вызываемую функцию.

Вместо этого:

functions.https.onRequest(...)

Это будет выглядеть так:

functions.https.onCall(...)

Затем вы возвращаете объект JavaScript для преобразования в JSON, а не используете объект ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...