我正在尝试连接到数据库,似乎设置是正确的,但由于某种原因,它说它不可用。app.module.ts
import { Module } from "@nestjs/common"
import { MongooseModule } from "@nestjs/mongoose";
import { ConfigModule } from "../config";
import { CreatorModule } from "./creator.module";
@Module({
imports: [
MongooseModule.forRoot('mongodb://localhost:27017/snaptoon', {
useCreateIndex: true,
useUnifiedTopology: true,
useNewUrlParser: true,
}),
CreatorModule,
],
controllers: [],
providers: []
})
export class AppModule {}
错误为:ERROR [MongooseModule] Unable to connect to the database. Retrying (9)...
我用的是'@nestjs/mongoose': '9.0.2'
5条答案
按热度按时间t3irkdon1#
我通过手动将Mongoose版本更新到6.2.2解决了
我意识到由于NPM安装上的这个错误
只需使用:
n8ghc7c12#
当我在连接字符串中添加了“directConnection=true”时,这对我很有效。
如果设置为TRUE,驱动程序将仅连接到URI中提供的主机,而不会发现群集中的其他主机。如果指定了多个主机,则直接连接无效。
以前:
之后:
我的应用程序在
"@nestjs/mongoose": "^8.0.0"
中运行得很好,当我更改到"@nestjs/mongoose": "^9.0.0"
时,我遇到了这个错误。文档:https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-options
t2a7ltrp3#
对于那些不能通过上面的答案解决这个问题的人,根据
nestjs/mongoose
的新规范。可以通过删除
useNewUrlParser: true
行来解决此问题。对我来说,它在两个方面都有效。
nxowjjhe4#
使用
mongodb://127.0.0.1:27017/snaptoon
而不是mongodb://localhost:27017/snaptoon
作为连接字符串。这对我很管用。pnwntuvh5#
我正在尝试连接远程数据库。我已经通过添加这个2查询参数解决了这个问题
?authSource=admin&directConnection=true
完整URI
mongodb://username:password@host:port/dbname?authSource=admin&directConnection=true
如果你得到这个错误
MongoParseError: Password contains unescaped characters
使用
encodeURIComponent
函数 Package 您的密码。mongodb://username:${encodeURIComponent(password)}@host:port/dbname?authSource=admin&directConnection=true