我正在React,MongoDB和Node.js中创建一个应用程序,我很新。我通过Node通过以下方式连接到MongoDB:
// Requiring the dependencies
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8080;
const itemRoutes = express.Router();
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb+srv://my-database:somepassword-xposu.mongodb.net/collection?retryWrites=true&w=majority', { useNewUrlParser: true } )
const connection = mongoose.connection;
connection.once('open', function() {
console.log('Connection to MongoDB established succesfully!');
});
我计划在Heroku上部署此应用程序,但是这种连接方法看起来并不十分安全,我了解了其他方法,但找不到任何方法,但我了解到您可以在env文件中禁用源映射,但是这样做足以保护应用程序安全吗?如果不是,那么在您的应用程序中连接到MongoDB并将其部署到生产环境的安全方法是什么?
在Heroku上,您可以将env vars添加到dyno中npm
,然后config.env
在部署后将其添加到您的应用程序中,为此您可以使用很多工具,为简单起见,您可以从安装env2 ,并在应用程序根目录中创建文件,然后调用来自它们的vars在生产环境中本地使用,您将在Heroku环境中添加相同的vars名称,并且将它们注入,因此您希望他们这样做。
// Requiring the dependencies
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const itemRoutes = express.Router();
require('env2')('config.env')
app.use(cors());
app.use(bodyParser.json());
const { DB_URL , PORT = 8080 } = process.env;
mongoose.connect(DB_URL, { useNewUrlParser: true } )
const connection = mongoose.connection;
connection.once('open', function() {
console.log('Connection to MongoDB established succesfully!');
});
and on the config.env file just add this line
DB_URL = mongodb+srv://my-database:somepassword-xposu.mongodb.net/collection?retryWrites=true&w=majority
因此,在您的本地环境中,您的.env文件存在,因此它将被注入到节点进程和env变量中,而在生产环境中,它将不在代码库级别而不是从Heroku级别注入
注意:确保将
config.env
文件添加到`.gitignore'文件中
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句