您可能会看到,我有我的数据库连接文件和另一个“受保护的”文件,其中包含我的凭据,并且该文件包含在.gitignore中。我导入它并到达数据。很基本。因此,我的问题是:
当前代码:
const mongoose = require("mongoose");
const mongoCredentials = require("../protected/mongoCredential");
const URI = `mongodb+srv://${mongoCredentials.username}:${mongoCredential.password}
@firstcluster-eldi8.mongodb.net/culturapp?retryWrites=true&w=majority`;
mongoose.connect(URI, { useUnifiedTopology: true, useNewUrlParser: true })
.then(db => console.log("MongoDB is connected"))
.catch(err => console.log(">> ERROR: ",err));
module.exports = mongoose;
...我有我的数据库连接文件和另一个“受保护的”文件(我的凭据在其中,并且此文件包含在.gitignore中)。我导入它并到达数据。
正确的方法是使用envrironmental variables。
环境变量是在环境上设置的,即您的本地开发计算机或远程生产服务器。然后,在您的应用程序中,读取环境变量并适当地使用它们。
至少有几个原因通常是这样进行的:
这里是设置环境变量的方式(这对于Linux,其他OS可能有所不同:]]
$ export MONGO_DB_USERNAME=foo $ export MONGO_DB_PASSWORD=bar
这是您在Node.js中阅读它们的方式:
console.log(process.env.MONGO_DB_USERNAME) // logs 'foo' console.log(process.env.MONGO_DB_PASSWORD) // logs 'bar'
或者,您可以在启动过程时像这样传递环境变量:
$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js
但是通常不建议这样做,因为您很可能要通过npm start script开始过程。由于定义了
package.json
命令的npm start
始终提交到存储库,因此无法实现隐藏凭据的整个目的。