export async function POST(request: Request) {
const session = auth();
if (!session) {
return new Response('Unauthorized', {
status: 401,
})
}
try {
const res = await request.json();
if (res) {
const order: OrderType | null = prepareOrder(res);
if (!order) {
return new Response('Order not created', {
status: 400,
})
}
//connect to the database
await dbConnect();
//create a new order document in the database
const newOrder = new Order(order);
await newOrder.save();
revalidatePath('/orders2');
//send server side event to the client
notifyListeners(order);
return new Response('Success!', {
status: 200,
})
} else {
return new Response('', {
status: 400,
})
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (error: any) {
return new Response(`Webhook error: ${error.message}`, {
status: 400,
})
}
}
< /code>
Вот я переоцениваю пользовательский интерфейс /orders2 < /code> страницы. Но это не переигрывает свежие данные из БД и не обновляет пользовательский интерфейс.import getOrders from '@/actions/woocommerce/getOrders'
import React from 'react'
async function page() {
const orders = await getOrders();
return (
{
orders.map(order => (
{order.order_id}
{order?.amount}
))
}
)
}
export default page
Не могли бы вы рассказать мне, как обновить пользовательский интерфейс после получения вебхука?
Я слушаю WebHook в следующем JS, создав API API Route API/webhook/order_created . Код < /p> [code]export async function POST(request: Request) { const session = auth();
if (!session) { return new Response('Unauthorized', { status: 401, }) }
try { const res = await request.json();
if (res) { const order: OrderType | null = prepareOrder(res);
if (!order) { return new Response('Order not created', { status: 400, }) }
//connect to the database await dbConnect();
//create a new order document in the database const newOrder = new Order(order); await newOrder.save();
revalidatePath('/orders2'); //send server side event to the client notifyListeners(order);
return new Response('Success!', { status: 200, }) } else { return new Response('', { status: 400, }) }
// eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { return new Response(`Webhook error: ${error.message}`, { status: 400, }) } } < /code> Вот я переоцениваю пользовательский интерфейс /orders2 < /code> страницы. Но это не переигрывает свежие данные из БД и не обновляет пользовательский интерфейс.import getOrders from '@/actions/woocommerce/getOrders' import React from 'react'
async function page() { const orders = await getOrders();
return (
{ orders.map(order => (
{order.order_id} {order?.amount}
)) }
) }
export default page [/code] Не могли бы вы рассказать мне, как обновить пользовательский интерфейс после получения вебхука?