模式"/>
在我的 NextJS 页面中导入猫鼬模式
我对 NextJS 特别陌生,我想知道是否可以就我遇到的问题寻求一些帮助。
我定义了 2 个 Mongoose 模式,并且在我的页面中使用一个模式已经有一段时间了,没有任何问题。但是,一旦我导入第二个模式,我的页面就会拒绝呈现并出现附加错误。
我导入哪个模式并不重要,但是一旦导入第二个模式,我就会得到与第二个模式相同的错误。
这是每个模式:
User.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 不喜欢那样,我没有足够的知识来找出我哪里出错了。
回答如下:我认为问题是您无法将 Mongoose 模式代码导入客户端组件。
你必须写一个 API 路由,把这个逻辑写在 api handler 中
dbConnect();
const albums = await AlbumSchema.find()
const data = albums.map(album => {
return { _id: album._id, name: album.name, cover: album.cover }
});
然后在
getServerSideProps
中,您向该 api 路径发出请求并在 props
对象中返回正确的结果
更多推荐
在我的 NextJS 页面中导入猫鼬模式
发布评论