CloudFunctionsException при вызове функции Firebase во Flutter

Я пытаюсь вызвать функцию Firebase из моего проекта Flutter. В моем файле pubspec.yaml я импортировал импорт функций: cloud_functions: ^0.4.0+2. Я также настроил все конфигурации firebase, так как у меня есть рабочее соединение с базой данных firestore из моего приложения. Затем я создал и развернул функцию Firebase в javascript следующим образом:

exports.addEventToCalendar = functions.https.onRequest((request, response) =>
const eventData = {
    eventName: request.body.eventName,
    description: request.body.description,
    startTime: request.body.startTime,
    endTime: request.body.endTime
    };
//more code using these variables
}

Я успешно развернул эту функцию в Firebase и успешно запустил и протестировал ее в консоли разработчика Google со следующими данными JSON:

{
"eventName": "Firebase Event",
"description": "This is a sample description",
"startTime": "2019-07-18T10:00:00",
"endTime": "2019-07-18T14:00:00"
}

Так я знаю, что эта функция работает.

Теперь, когда я пытаюсь вызвать это в своем приложении Flutter, используя этот метод:

void _addToCal() async {
  try {
    final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
      functionName: 'addEventToCalendar',
    );
    dynamic resp = await callable.call(<String, dynamic>{
      "eventName": "Flutter Event",
      "description": "This is a sample description",
      "startTime": "2019-07-15T10:00:00",
      "endTime": "2019-07-15T14:00:00"
    });
  } catch (e, s) {
    print(e);
    print(s);
  }
}

Я получаю экземпляр ошибки CloudFunctionsException.

Со стороны Firebase я просматриваю журналы функции и вижу несколько ошибок, в том числе: TypeError: Cannot read property 'data' of undefined.

Спасибо за любую помощь, так как я новичок в Firebase и Cloud Functions.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 113
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте получить данные из вашей функции следующим образом:

const { body } = req;
const eventName = req.query.eventName || body.eventName || (body.data && body.data.eventName);
const description = req.query.description || body.description || (body.data && body.data.description);
const startTime = req.query.startTime || body.startTime || (body.data && body.data.startTime);
const endTime = req.query.endTime || body.endTime || (body.data && body.data.endTime);

const eventData = {
    eventName: eventName,
    description: description,
    startTime: startTime,
    endTime: endTime
    };

Вы вызываете функцию вызываемый из своего кода Flutter, но вы объявляете обычную функцию, активируемую HTTPS, в вашем index.js. Облачные функции Вызываемый объявлены, как показано здесь:

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

Когда я изменяю его на это, в моих журналах для функции в Firebase говорится: «Необработанная ошибка TypeError: не удается прочитать свойство «eventName» из неопределенного»?

Gabe 15.07.2019 15:17

Обновили ли вы облачные функции, чтобы считать их параметры из data и context, как показано в документации, на которую я ссылаюсь?

Frank van Puffelen 15.07.2019 15:58

Спасибо, @Frank! Это правильный ответ. Также необходимо добавить функцию возврата в облако, так как объект ответа недоступен.

GaboBrandX 29.08.2019 16:06

Другие вопросы по теме