首页 > 解决方案 > 使用 dot-env 作为我的 MongoDB 用户名/密码

问题描述

我编写了一个博客网站,该网站现在功能齐全,但我不知道如何使用 dot-env 作为用户名/密码,该用户名/密码需要进入我的 server.js 文件中的 MongoDB 连接请求。

例如,我正在使用 Mongoose 进行连接,如下所示:

mongoose.connect('mongodb+srv://<username>:<password>@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority');

当我将用户名/密码以纯文本形式输入时,数据库运行良好。但是...如果我用 dot-env 变量替换它们,如下所示:

mongoose.connect('mongodb+srv://process.env.MONGO_USERNAME:process.env.MONGO_PASSWORD@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority');

它不起作用 - 我的终端(当前托管在本地主机上)出现错误,说明身份验证失败。

有没有解决的办法?如果是这样,我会怎么做?

谢谢!

标签: mongodbdotenv

解决方案


您实际上是在传递字符串"process.env.MONGO_USERNAME""process.env.MONGO_PASSWORD"作为用户名和密码传递。

您将不得不获取变量的值。

有几种方法,例如

  1. 使用 ES2015模板文字
mongoose.connect(`mongodb+srv://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority`);
  1. 使用字符串连接
mongoose.connect('mongodb+srv://' + process.env.MONGO_USERNAME + ':' + process.env.MONGO_PASSWORD + '@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority');

提示:您也可以将整个连接字符串放在环境变量中

MONGO_URI=mongodb+srv://<username>:<password>@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority
mongoose.connect(process.env.MONGO_URI)

推荐阅读