#javascript #reactjs #next.js
#javascript #reactjs #next.js
Вопрос:
в моем приложении nextjs, когда пользователь выполняет заказ, появляется веб-хук, который отправляет сообщения в мой маршрут api /hook
Я ищу способ получить эти данные в свое приложение, мне просто нужна информация один раз, а затем ее можно отбросить.
Я попытался поместить данные в массив, а затем я бы сделал запрос GET в своем приложении для извлечения, как только он существует, но мой массив всегда отображается как пустой. Возможно, есть лучший способ сделать это?
В идеале я не хочу хранить в БД, поскольку это не требуется.
Как я могу использовать данные POST внутри моего приложения react / nextjs?
webhook
{summary: {
subtotal: 8.99,
taxableTotal: 8.99,
total: 11.46,
payableNow: 11.46,
}
server.js
export default async (req, res) => {
const arr = []
console.log(arr)
const { method, body } = req
if (method === 'POST')
{
res.statusCode = 200
res.setHeader('Content-Type', 'application/json')
res.end(JSON.stringify({
'msg' : body,
}))
console.log(body)
arr.push(JSON.stringify({body}))
} else {
// res.statusCode = 200
// res.json(arr)
res.status(200).json(arr)
}
}
Комментарии:
1. ваш массив, похоже, определен локально, не так ли?
2. да, это определено в моем server.js файл, я хотел сохранить данные post в этом массиве, а затем использовать их в запросе get
3. из того, что вы опубликовали, ваш массив определен внутри вашего обработчика запроса, просто переместите его в верхнюю область (я полагаю, файл модуля)
Ответ №1:
Просто сделайте свой массив частью области видимости модуля вместо того, чтобы создавать его внутри вашего обработчика запросов (который будет создавать один массив на запрос)
const arr = []
export default async (req, res) => {
const { method, body } = req
if (method === 'POST')
{
res.statusCode = 200
res.setHeader('Content-Type', 'application/json')
res.end(JSON.stringify({
'msg' : body,
}))
arr.push(JSON.stringify({body}))
} else {
res.status(200).json(arr)
}
}