Я пытаюсь отправить POST-запрос из приложения App Script в облачную функцию firebase. Но я не могу правильно отправлять массивы внутри этого запроса. Запрос отправляет массив беспорядочно, так что облачная функция не может его правильно прочитать
Я использую следующий код:
const data = {
var1: 'string',
var2: {name: 'object'},
var3: new Date(),
var4: [1, 2, 3],
var5: [{name: 'any object'}, {name: 'inside an array'}],
}
const url = "https://us-central1-my-app.cloudfunctions.net/executeFunction";
const options = {
method: "post",
"Content-Type": "application/json", //I tried to change this content-type for other options
payload: data
};
const request = UrlFetchApp.fetch(url, options);
На стороне сервера я пытался считайте данные следующими способами:
export const executeFunction = functions.https.onRequest(async(req, res) => {
//option 1
const data = JSON.parse(req.body);
res.send(JSON.stringify(data));
//option2
const data = req.body;
res.send(JSON.stringify(data);
})
Но на сервере req.body
возвращает мне следующее значение:
{
"var1":"string",
"var2":{"name":"object"},
"var3":"2020-07-14T18:45:21.946Z",
"var4":[Ljava.lang.Object;@5e1b03dd, // :(
"var5":[Ljava.lang.Object;@19d93f99 // :(
Как я могу правильно получить значения массива?
Я подозреваю, что это может быть что-то связано с кодировкой, но я уже пробовал использовать "Content-Type": "application/json; charset=utf-8"
на объекте options
, и это не сработало.
Есть идеи, как решить Это? :)
Обновление:
Спасибо @ Pickachu
Мне пришлось изменить 2 вещи: -stringify полезной нагрузки -заменить ключ на опциях с " Content-Type "to" contentType "
Вот код:
const options = {
method: "post",
contentType: "application/json", //changed here
payload: JSON.stringify(data) //and here
};
const request = UrlFetchApp.fetch(url, options);