将Next.js版本13.5.5与mongoose 7.6.3连接

yhived7q  于 2023-10-19  发布在  Go
关注(0)|答案(1)|浏览(118)

我正在使用Next.js版本13.5.5和Mongoose 7.6.3,我遇到的错误如下:MongooseError:Mongoose.prototype.connect()不再接受回调。生成页面时发生此错误。所有控制台日志都将显示在终端窗口中。
我在connectMongo.js文件中的代码如下:

import mongoose from 'mongoose';

const connectMongo = async () => mongoose.connect(process.env.MONGO_URI,
{useNewUrlParser: true, useUnifiedTopology:true},
()=> {
    console.log('Connected to MongoDB')
})

导出默认的connectMongo;
我希望收到关于如何在MongoDB中使请求工作的回复

uajslkp6

uajslkp61#

这是因为您正在使用一种过时的连接方法。回调不再是连接函数中包的一部分。如果你想创建自己的mongoose连接模块,你可以这样做:

import mongoose from 'mongoose';
const connectMongo = async () => {
    try {
        // await for the asynchronous connection to return
        const con = await mongoose.connect(process.env.MONGO_URI);
        console.log(`Connected to database at: ${con.connection.host}`);
    } catch (error) {
        throw error;
    }
}

export default connectMongo;

然后在你的app.jsindex.js或任何你的主文件被称为只是导入它执行在一个try/catch这样:

import connectMongo from './connectMongo.js'

try{
    connectMongo();
}catch(err){
   console.log(err);
   //Handle error
}

从我所看到的,mongoose文档中有一个不匹配的地方,因为这里解释了如何在mongoose.connect方法中使用回调。但是,在这里您可以看到V7中删除了回调支持的所有方法的列表,Mongoose.prototype.connect显然是其中之一。

相关问题