最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在我的 NextJS 页面中导入猫鼬模式

网站源码admin30浏览0评论

在我的 NextJS 页面中导入猫鼬模式

在我的 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
对象中返回正确的结果

发布评论

评论列表(0)

  1. 暂无评论