无法连接到数据库,正在重试

crcmnpdw  于 2022-10-22  发布在  Go
关注(0)|答案(5)|浏览(205)

我正在尝试连接到数据库,似乎设置是正确的,但由于某种原因,它说它不可用。
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'

t3irkdon

t3irkdon1#

我通过手动将Mongoose版本更新到6.2.2解决了

WARN @nestjs/mongoose@9.0.2 requires a peer of mongoose@^6.0.2 but none is installed. You must install peer dependencies yourself.

我意识到由于NPM安装上的这个错误
只需使用:

npm install mongoose@6.2.2 --save
n8ghc7c1

n8ghc7c12#

当我在连接字符串中添加了“directConnection=true”时,这对我很有效。
如果设置为TRUE,驱动程序将仅连接到URI中提供的主机,而不会发现群集中的其他主机。如果指定了多个主机,则直接连接无效。
以前:

MongooseModule.forRoot(
  `mongodb://${host}:${post}/${dbName}`,
),

之后:

MongooseModule.forRoot(
  `mongodb://${host}:${post}/${dbName}?directConnection=true`,
),

我的应用程序在"@nestjs/mongoose": "^8.0.0"中运行得很好,当我更改到"@nestjs/mongoose": "^9.0.0"时,我遇到了这个错误。
文档:https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-options

t2a7ltrp

t2a7ltrp3#

对于那些不能通过上面的答案解决这个问题的人,根据nestjs/mongoose的新规范。
可以通过删除useNewUrlParser: true行来解决此问题。
对我来说,它在两个方面都有效。

nxowjjhe

nxowjjhe4#

使用mongodb://127.0.0.1:27017/snaptoon而不是mongodb://localhost:27017/snaptoon作为连接字符串。这对我很管用。

pnwntuvh

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

相关问题