mongodb - 使用 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');
它不起作用 - 我的终端(当前托管在本地主机上)出现错误,说明身份验证失败。
有没有解决的办法?如果是这样,我会怎么做?
谢谢!
解决方案
您实际上是在传递字符串"process.env.MONGO_USERNAME"
并"process.env.MONGO_PASSWORD"
作为用户名和密码传递。
您将不得不获取变量的值。
有几种方法,例如
- 使用 ES2015模板文字
mongoose.connect(`mongodb+srv://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@jons-thoughts.xpo8p.mongodb.net/jons-thoughts?retryWrites=true&w=majority`);
- 使用字符串连接
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)
推荐阅读
- sql-server - 为什么 SQL Server 不保留表达式中的数据类型?
- javascript - bootstrap 4 datepicker显示一侧偏差
- laravel - Laravel mix 无法编译 import() 函数
- c# - 我应该在 WPF 中使用自定义控件声明绑定选项的页面
- swift - 如何在 UITableViewCell 中检查 UILabel 是否被截断?
- c# - Designer.cs 源代码控制困境
- javascript - 无法删除 Chrome devtool for mac 中的 dom 断点
- python - 如何读取不区分大小写的列名 pandas 字符串
- ruby - 以特定格式提取 URL 的一部分
- javascript - 使用在 jquery 的另一个函数中定义的变量