使用 TypeOrm 连接到 MongoDB Atlas?

Cra*_*zit 4 mongodb typeorm mongodb-atlas

我正在尝试使用 TypeOrm 连接到 Mongodb Atlas。

这是我的ormconfig.json:

{
  "type": "mongodb",
  "host": "cluster0-****.mongodb.net",
  "port": 27017,
  "username": "testUser",
  "password": "******",
  "database": "test",
  "useNewUrlParser": true,
  "synchronize": true,
  "logging": true,
  "entities": ["src/entity/*.*"]
}
Run Code Online (Sandbox Code Playgroud)

然后当我尝试出现createConnection()此错误时: (node:10392) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [cluster0-****.mongodb.net:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND cluster0-****.mongodb.net cluster0-****.mongodb.net:27017]

实际上,我找不到有关如何执行此操作的任何信息。

我的端口对吗?如果它不是我在哪里可以找到它?我在哪里可以在 Atlas 上找到我的数据库名称?

Cra*_*zit 9

好的,我通过执行以下操作解决了它:

{
  "type": "mongodb",
  "url": "mongodb+srv://testUser:<password>@cluster0-****.mongodb.net/test?retryWrites=true&w=majority",
  "useNewUrlParser": true,
  "synchronize": true,
  "logging": true,
  "entities": ["src/entity/*.*"]
}
Run Code Online (Sandbox Code Playgroud)

我真的不知道“逐字段”配置有什么问题,但通过传递 url 似乎可以正常工作。


Aki*_*oni 5

TYPEORM 文档对于 mongodb 连接问题不是很清楚,并且可能没有经常更新。所以我把这个放在这里供未来的读者参考。

  1. 您需要确保您的 IP 已列入白名单。(您可以通过转到project => network access [tab] => IP whitelist [tab]并添加您的 IP 地址或使用0.0.0.0.
  2. ssl:true通过在 orm 配置文件中进行设置来为您的连接启用 SSL 。
  3. 不要忘记使用添加您的身份验证数据库authSource:admin。

.env下面是我的文件的示例

TYPEORM_CONNECTION=mongodb
TYPEORM_HOST=cluster0-shard-00-02-xxxxx.mongodb.net
TYPEORM_PORT=27017
TYPEORM_USERNAME=root
TYPEORM_PASSWORD=password
TYPEORM_DATABASE=mydatabase
TYPEORM_SYNCHRONIZE=true
TYPEORM_LOGGING=true
TYPEORM_ENTITIES=./dist/**/*.entity.js
TYPEORM_DRIVER_EXTRA={"ssl":true, "authSource": "admin"}
Run Code Online (Sandbox Code Playgroud)