import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export const GET = async (req, response, next) => {
try {
console.log('Connected to Database via Prisma');
const movies = await prisma.movies.findMany();
console.log('Fetched movies:', movies);
console.log(response);
response.status(200).json(movies);
} catch (error) {
console.error('Internal Server Error:', error);
if (!response.headersSent) {
response.status(500).json({ error: 'Internal Server Error' });
}
} finally {
await prisma.$disconnect().catch((disconnectError) => {
console.error('Failed to disconnect:', disconnectError);
});
}
};
当我运行此程序时,我收到内部服务器错误:TypeError:response.status 不是函数
但是当我控制台记录电影时,我得到了正确的列表,我想知道为什么响应给我错误
我期待对 .jsx 组件的响应,如下所示
import React, { useEffect, useState } from 'react';
const MoviesComponent = () => {
const [movies, setMovies] = useState([]);
const [error, setError] = useState(null);
useEffect(() => {
const fetchMovies = async () => {
try {
console.log('Fetching movies...');
const response = await fetch('/api/movies');
if (!response.ok) {
console.log(response)
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
setMovies(data);
} catch (error) {
console.error("Failed to fetch movies:", error);
setError("Failed to fetch movies. Please try again later.");
}
};
fetchMovies();
}, []);
if (error) {
return <p>{error}</p>;
}
return (
<div>
<ul>
{movies.map(movie => (
<li key={movie.id}>
<strong>{movie.movie_name}</strong> ({movie.release_year})
<p>Cast: {movie.cast.join(', ')}</p>
</li>
))}
</ul>
</div>
);
};
export default MoviesComponent;
我真的很感谢这方面的帮助,因为我在过去 12 小时内尝试修复此问题,但仅针对联系 mongodb 服务器以获取一些数据的 Route.js 文件进行修复
在App router中,route handler的第二个参数是事件而不是响应。第三个参数
next
在 Next.js App Router 中不存在。它存在于其他一些框架中,例如 Express.js
要发送响应,您可以使用内置
Response
API 或从 NextResponse
;导入
"next/server"
类
// app/api/route.js
export const GET = async (req, response, next) => {
// ...
return Response.json(movies, { status: 200 });
}
或者
import { NextResponse } from "next/server"
// ...
return NextResponse.json(movies, { status: 200 })