prisma.findmany() в prod режиме возвращаются устаревшие данные, но в режиме dev все ок

При попытке получить данные из таблицы prisma.order.findmany() в режиме разработки мы получаем правильные данные, в производственном режиме мы получаем данные только на этапе инициализации проекта.

useOrders.ts

import { useState, useEffect } from 'react';
import { Order } from '@prisma/client';

export const useOrders = () => {
  const [orders, setOrders] = useState<Order[]>([]);
  const [filteredOrders, setFilteredOrders] = useState<Order[]>([]);
  const [statusFilter, setStatusFilter] = useState<string>('ALL');
  const [searchId, setSearchId] = useState<string>('');

  const fetchOrders = async () => {
    try {
      console.log('[USE-ORDERS-FETCH] Fetching orders...');
      const res = await fetch(`/api/admin/orders?timestamp=${Date.now()}`, {
        headers: {
          'Content-Type': 'application/json',
        },
      });

      if (!res.ok) {
        throw new Error(`[USE-ORDERS-FETCH] HTTP error! status: ${res.status}`);
      }

      const data = await res.json();
      console.log('[USE-ORDERS-FETCH] Fetched orders:', data);
      setOrders(data);
      console.log('[USE-ORDERS-FETCH] Orders state updated:', data);
    } catch (error) {
      console.error('[USE-ORDERS-FETCH] Error fetching orders:', error);
    }
  };

  const updateOrder = async (orderId: string, field: string, value: string) => {
    try {
      const response = await fetch(`/api/admin/orders/${orderId}`, {
        method: 'PATCH',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ [field]: value }),
      });

      if (!response.ok) {
        const error = await response.json();
        throw new Error(error.error || '[USE-ORDERS-UPDATE] Failed to update order');
      }
      await fetchOrders();
      console.log('[USE-ORDERS-UPDATE] Order updated:', orderId, field, value);
    } catch (error) {
      console.error('[USE-ORDERS-UPDATE] Error updating order:', error);
    }
  };

  useEffect(() => {
    fetchOrders();
    console.log('[USE-ORDERS-USEEFFECT] Orders:', orders);
  }, []);

  useEffect(() => {
    if (statusFilter === 'ALL') {
      setFilteredOrders(
        searchId 
          ? orders.filter(order => order.orderId.toString().includes(searchId))
          : orders
      );
    } else {
      setFilteredOrders(
        orders.filter(order => 
          order.status === statusFilter && 
          (searchId ? order.orderId.toString().includes(searchId) : true)
        )
      );
    }
  }, [statusFilter, orders, searchId]);

  return {
    orders,
    filteredOrders,
    statusFilter,
    setStatusFilter,
    searchId,
    setSearchId,
    updateOrder,
  };
}; 

app/api/admin/orders/route.ts

import { prisma } from '@/prisma/prisma-client';
import { NextRequest, NextResponse } from 'next/server';

export async function GET(request: NextRequest) {
  try {
    let orders = await prisma.order.findMany({
        orderBy: {
        createdAt: 'desc'
      }
    });
    console.log('[API-ADMIN-ORDERS-GET] Orders:', orders);
    return NextResponse.json(orders, {
      headers: {
        'Cache-Control': 'no-store, no-cache, must-revalidate, proxy-revalidate',
        'Pragma': 'no-cache',
        'Expires': '0',
      },
    });
  } catch (error) {
    console.error('[API-ADMIN-ORDERS] Orders API Error:', error);
    return NextResponse.json({ error: '[API-ADMIN-ORDERS] Внутренняя ошибка сервера' }, { status: 500 });
  }
} 

выводит логи в режиме разработки, но не в рабочем режиме. в то же время логи /api/admin/orders/${OrderID} передаются как в dev, так и в prod

app\api\admin\orders[id]\route.ts

import { prisma } from '@/prisma/prisma-client';
import { NextRequest, NextResponse } from 'next/server';

export async function PATCH(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const body = await request.json();
    const orderId = parseInt(params.id);

    if (isNaN(orderId)) {
      return NextResponse.json(
        { error: '[API-ADMIN-ORDERS-PATCH] Invalid order ID' },
        { status: 400 }
      );
    }

    const updatedOrder = await prisma.order.update({
      where: { id: orderId },
      data: body,
    });
    console.log('[API-ADMIN-ORDERS-PATCH] Updated order:', updatedOrder);
    return NextResponse.json(updatedOrder);
  } catch (error) {
    console.error('[API-ADMIN-ORDERS-PATCH] Update Order API Error:', error);
    return NextResponse.json(
      { error: '[API-ADMIN-ORDERS-PATCH] Ошибка при обновлении заказа' },
      { status: 500 }
    );
  }
} 

в базе данных действительно происходят изменения, но prisma возвращает ответ со статусом 200 и данными, которые были при первой инициализации проекта (только в prod режиме, в режиме разработки корректные данные). вот скриншоты из network и supbase

в данном случае я изменил статус с "COMPLETED" на "PENDING", эти изменения были корректно изменены в supаbase, но после запроса /api/admin/orders/ нам возвращаются данные до изменения, статус равен 200. даже если я обновлю страницу, будет сделан новый запрос, он все равно вернет старые данные. network

supabase

headers

Я подумал, что, возможно, проблема в nginx или middleware, но их полное удаление привело к тем же результатам.


Ответы (0 шт):