Búsqueda de sitios web

typescript - error al probar la ruta dinámica en nextjs usando postman


He escrito una ruta de API en Next usando el nombre de archivo como route.ts y escribí 2 rutas, una para obtener todos los usuarios en la base de datos y otra solo para obtener un usuario pasando un id de usuario como consulta a través de parámetros. Mi estructura de carpetas y los códigos de las rutas se muestran a continuación. Mientras estoy probando mis rutas en Postman, la ruta para obtener todos los usuarios funciona bien, y al ejecutar la ruta dinámica pasando un id, estoy recibiendo todos los usuarios en lugar del usuario cuyo id envié. He usado Prisma para hacer consultas. ¿Cómo puedo resolver esto?

código para obtener un usuario

import {  NextResponse } from "next/server";
import prisma from '@/libs/prismadb'
import { NextApiRequest } from "next";



export  async function GET(
    req:NextApiRequest,
    
){
    if(req.method!=='GET')
    {
        return NextResponse.json({"message":"something went wrong","status":400});
    }

    try {
        const users = await prisma.user.findMany({
            orderBy:{
                createdAt:'desc'
            }
        })

         return NextResponse.json({"message":users,"status":200});
    } catch (error) {
        console.log(error)
         return NextResponse.json({"message":"something went wrong","status":400});
    } 
}

código para obtener todos los usuarios

[![My Folder Strucutre][1]][1]
import { NextRequest, NextResponse } from "next/server";
import prisma from '@/libs/prismadb'
import { NextApiRequest, NextApiResponse } from "next";

export  async function GET(
    req:NextApiRequest,
    res:NextApiResponse
)
{
    try {
        const {userId} = req.query

        if(!userId || typeof userId!=='string')
        {
            throw new Error("Some Thing Went Wrong")
        }

        const existingUser = await prisma.user.findUnique({
            where:{
                id:userId
            }
        })

        NextResponse.json({"message":existingUser,"Status":200})
    } catch (error) {
        console.log(error)
        NextResponse.json(error)
    }

}

Respuesta #1

El código para obtener un usuario en realidad está usando findMany, que obtendrá todos los usuarios, y el código para obtener todos los usuarios parece estar diseñado para obtener un solo usuario por ID.

Aquí está el fragmento para obtener todos los usuarios:

import { NextResponse } from "next/server";
import prisma from '@/libs/prismadb';

export async function GET(req: NextApiRequest) {
  if (req.method !== 'GET') {
    return NextResponse.json({ "message": "something went wrong", "status": 400 });
  }

  try {
    const users = await prisma.user.findMany({
      orderBy: {
        createdAt: 'desc'
      }
    });

    return NextResponse.json({ "message": users, "status": 200 });
  } catch (error) {
    console.log(error);
    return NextResponse.json({ "message": "something went wrong", "status": 400 });
  }
}

Y aquí está el fragmento para obtener un usuario

import { NextResponse } from "next/server";
import prisma from '@/libs/prismadb';
import { NextApiRequest, NextApiResponse } from "next";

export async function GET(req: NextApiRequest, res: NextApiResponse) {
  try {
    const { userId } = req.query;

    if (!userId || typeof userId !== 'string') {
      throw new Error("Something Went Wrong");
    }

    const existingUser = await prisma.user.findUnique({
      where: {
        id: parseInt(userId),
      },
    });

    res.json({ "message": existingUser, "Status": 200 });
  } catch (error) {
    console.log(error);
    res.json(error);
  }
}