在我的NextJS页面中导入Mongoose模式

vuv7lop3  于 2023-05-17  发布在  Go
关注(0)|答案(1)|浏览(249)

我对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不喜欢这样,我没有足够的知识来找出我错在哪里。

afdcj2ne

afdcj2ne1#

我认为问题在于您无法将Mongoose模式代码导入到客户端组件中。
你必须写一个API路由,把这个逻辑写在API处理器里

dbConnect();
const albums = await AlbumSchema.find()
const data = albums.map(album => {
    return { _id: album._id, name: album.name, cover: album.cover }
});

然后在getServerSideProps中向该API路径发出请求,并在props对象中返回正确的结果

相关问题