Как объяснено в документации Express :
res.json([body])
Отправляет ответ JSON. Этот метод отправляет ответ (с правильным типом содержимого), который является параметром, преобразованным в строку JSON с использованием JSON.stringify()
.
Параметр может быть любого типа JSON, включая объект, массив, string, Boolean, number или null, и вы также можете использовать его для преобразования других значений в JSON.
После «отладки», которую мы сделали в комментариях / чате, кажется, что
{message: response}
объект, который вы передаете json()
, генерирует ошибку.
Следуя документации HTTP Cloud Functions , которая гласит:
Внимание! Убедитесь, что все функции HTTP отключены правильно. Правильно завершая функции, вы можете избежать чрезмерных расходов от функций, которые работают слишком долго. Завершите функции HTTP с помощью res.redirect()
, res.send()
или res.end()
.
, и поскольку вы объяснили в чате, что вам «нужно только вернуть код состояния» и что вы «хотите» сохранить данные json в: admin.database().ref(/venue-menus/${locationId}/menu)
",
Я бы посоветовал вам сделать следующее:
exports.doshiiMenuUpdatedWebhook = functions.https.onRequest((req, res) => {
if (req.method === 'PUT') {
return res.status(403).send('Forbidden!');
}
cors(req, res, () => {
let verify = req.query.verify;
if (!verify) {
verify = req.body.verify;
}
let locationId = req.body.data.locationId
let posId = req.body.data.posId
let type = req.body.data.type
let uri = req.body.data.uri
let itemUri = req.body.data.itemUri
const options = {
headers: { 'authorization': 'Bearer ' + req.query.verify }
};
axios.get(uri, options)
.then(response => {
console.log('response data: ', response.data);
return admin.database().ref(`/venue-menus/${locationId}/menu`).set(response.data)
})
.then(response => {
return res.status(200).end()
})
.catch(err => {
return res.status(500).send({
error: err
})
})
})
});