Трудности с отправкой данных в HTTP-функции Google Firebase - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь поместить некоторые переменные как часть req.body в облачную функцию Firebase. Я использую современный синтаксис fetch() следующим образом:

const { licenseCode } = this.state;
fetch('https://myAPI.com/inputLicense', {
  method: 'POST',
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ licenseCode })
})

А вот как выглядит моя функция Cloud:

exports.inputLicense = functions.https.onRequest((request, response) => {
  // const { licenseCode } = request.body
  console.log(request.get('content-type'))
  console.log('query', request.query)
  console.log('body', request.body)
})

К сожалению, все вышеперечисленное ведение журнала производит пустые объекты или неопределенные в случае первой строки. В обычной экспресс-настройке я знаю, что мне нужно использовать:

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

Но не знаю, как это сделать с помощью облачных функций. Google утверждает, что в своих документах они анализируют мои запросы автоматически, основываясь на заголовке, но я просто не могу заставить его работать.

Любая помощь более чем приветствуется, заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2019

Я провел несколько тестов, и, по-видимому, проблема связана с деструктуризацией объекта.

Должно работать следующее:

const obj = { licenseCode: this.state };
fetch('https://myAPI.com/inputLicense', {
  method: 'POST',
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(obj)
})
...