我对NextJS特别陌生,我想知道我是否可以就我遇到的问题寻求一些帮助。
我定义了2个Mongoose模式,并在我的页面中使用了一段时间,没有任何问题。然而,当我导入第二个模式时,我的页面拒绝呈现并附带错误。
导入哪个模式并不重要,但是只要导入第二个模式,我就会得到第二个模式的相同错误。
以下是每个schema:
用户名.js
import mongoose from "mongoose";
const UserSchema = new mongoose.Schema({}, { strict: false });
export default mongoose.models.User || mongoose.model("User", UserSchema);
Album.js
import mongoose from "mongoose";
const AlbumSchema = new mongoose.Schema({}, { strict: false });
export default mongoose.models.Album || mongoose.model("Album", AlbumSchema);
这是发生错误的页面。
albums.js
import Layout from "@/Components/Dashboard/DashLayout";
import AlbumCard from "@/Components/Dashboard/Albums/AlbumCard";
import AlbumSchema from "@/models/Album";
import dbConnect from "@/utils/dcConnect";
export default function DashAlbums({ albums }) {
return (
// Page content removed for import
);
}
// Require authentication
DashAlbums.auth = true;
export async function getServerSideProps(context) {
dbConnect();
const albums = await AlbumSchema.find()
const data = albums.map(album => {
return { _id: album._id, name: album.name, cover: album.cover }
});
return { props: { albums: JSON.parse(JSON.stringify(data)) } }
}
有人能帮我找出我错在哪里吗?
我试过只导出模型,但NextJS不喜欢这样,我没有足够的知识来找出我错在哪里。
1条答案
按热度按时间afdcj2ne1#
我认为问题在于您无法将Mongoose模式代码导入到客户端组件中。
你必须写一个API路由,把这个逻辑写在API处理器里
然后在
getServerSideProps
中向该API路径发出请求,并在props
对象中返回正确的结果