MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上
Posted
技术标签:
【中文标题】MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上【英文标题】:MongooseModule: Unable to connect to the database. On a dockerized Nestjs app with Mongo 【发布时间】:2021-08-23 14:04:13 【问题描述】:我正在尝试使用 docker-compose 启动 react-nestjs-mongo db 应用程序,但由于某种原因它似乎不起作用。 docker-compose --build
输出显示如下:
服务器 | [Nest] 32 - 06/06/2021,凌晨 3:10:25 [MongooseModule] 无法连接到数据库。正在重试 (7)... +33006ms
数据库 | "t":"$date":"2021-06-06T03:10:27.406+00:00","s":"I", "c":"STORAGE", "id":22430, "ctx":"WTCheckpointThread","msg":"WiredTiger 消息","attr":"消息":"[1622949027:406819][1:0x7f9ae2c3b700], WT_SESSION.checkpoint:[WT_VERB_CHECKPOINT_PROGRESS] 保存检查点 快照最小值:7,快照最大值:7 快照计数:0,最早的时间戳: (0, 0) ,元检查点时间戳:(0, 0)"
这是我的 docker-compose:
version: "3.5"
services: client:
container_name: client
build: ./client
ports:
- 3000:3000
depends_on:
- server
server:
container_name: server
build: ./server
ports:
- 8000:8000
depends_on:
- mongodb
links:
- mongodb
mongodb:
container_name: database
image: mongo
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
我的 app.modules.ts 文件如下所示:
import Module from '@nestjs/common';
import AppController from './app.controller';
import AppService from './app.service';
import MongooseModule from '@nestjs/mongoose';
@Module(
imports: [
MongooseModule.forRoot('mongodb://localhost:27017/nestjs',
useNewUrlParser: true,
),
],
controllers: [AppController],
providers: [AppService],
)
class AppModule
谁能解释一下为什么这不起作用?
【问题讨论】:
【参考方案1】:您正在使用 docker-compose 。因此,您没有连接“localhost”,但它应该是您在 docker-compose 文件中定义的“服务”的地址。
而不是 'mongodb://localhost:27017/nestjs' ,您应该使用(在您的情况下,您在 docker-compose 中定义的服务名称是 mongodb 。您应该使用 'mongodb://mongodb:27017/nestjs'
【讨论】:
以上是关于MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Workbench 无法连接到我的 RDS 数据库:无法连接到 localhost
连接网站显示数据库错误:无法连接到数据库:无法连接到MySQL?
Web API 在使用几天后总是无法连接到 MYSQL 数据库