如何在NextJS启动中初始化Mongodb



正如您所知,NextJS是Jamstack框架,我正在从node/express迁移到它,但我的问题是如何像在express中那样在服务器启动时将服务器连接到数据库?现在可以在NextJS中放置我的初始化代码了吗?我说的对吗?我看到了一些代码,但也有我不熟悉的打字代码

另一方面,我可以在像getStaticPropsgetServerSideProps这样的服务器端函数上做到这一点,这是我的代码dbinit.js

import mongoose from "mongoose";
export const dbStatus = () => mongoose.connection.readyState;
export default function dbConnect() {
if (dbStatus == 1) return "database is connected";
mongoose.connect(
`mongodb://localhost:${process.env.DBPORT}/${process.env.DBNAME}`
);
}

index.js

export async function getServerSideProps() {
const result = await dbConnect();
console.log(dbStatus());
return {
props: {},
};
}

有了这个代码,我可以连接到mongodb,但也有一些问题,最重要的是mycode不是干净的代码

在NextJS中,我们可以连接MongoDB作为中间件。这与Express中间件方法非常相似,如下所示。

// middleware/database.js
import { MongoClient } from 'mongodb';
import nextConnect from 'next-connect';
const client = new MongoClient('{YOUR-MONGODB-CONNECTION-STRING}', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
async function database(req, res, next) {
if (!client.isConnected()) await client.connect();
req.dbClient = client;
req.db = client.db('MCT');
return next();
}
const middleware = nextConnect();
middleware.use(database);
export default middleware;

有关更多详细信息,您可以参考此官方操作文档以获得分步指导。以下是所使用的示例存储库。

最新更新