118 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Guide for Using MongoDB and Deploying to Heroku
 | ||
| localeTitle: 使用MongoDB和部署到Heroku的指南
 | ||
| ---
 | ||
| 在本指南中,让我们看看如何在本地使用MongoDB,并使用`mLab`将其部署到Heroku。或者您也可以在Heroku中使用`mLab`插件,它是免费的,但可能需要您的信用卡详细信息。因此,如果您对提供信用卡详细信息不感兴趣,可以访问[mLab](https://mlab.com)网站。
 | ||
| 
 | ||
| ## 在Heroku和`mLab`上设置一个免费帐户:
 | ||
| 
 | ||
| 注册[Heroku](https://signup.heroku.com/)和[mLab](https://mlab.com/signup/)
 | ||
| 
 | ||
| ## 启动Mongodb(本地):
 | ||
| 
 | ||
| 要在您自己的系统上启动数据库,请执行以下命令:
 | ||
| ```
 | ||
| # Create a directory named 'data' if it doesn't exist 
 | ||
|  $ mongod --port 27017 --dbpath=./data 
 | ||
| ```
 | ||
| 
 | ||
| 现在你的Db正在运行 -
 | ||
| 
 | ||
| `mongodb://localhost:27017/my_database_name`
 | ||
| 
 | ||
| 如果您使用的是c9,如果在C9中启动数据库时遇到问题,请参阅此[页面](https://community.c9.io/t/setting-up-mongodb/1717)
 | ||
| 
 | ||
| ## 启动Mongodb( `mLab` ):
 | ||
| 
 | ||
| 1.  创建`mLab`帐户后,单击**Create new**按钮并选择Single-node - > Sandbox以获取免费Db并为您的数据库命名(我为此创建了一个名为'food'的数据库)。
 | ||
| 2.  现在创建一个名为'food'的数据库,您可以创建自己的新集合。
 | ||
| 3.  最后添加可以访问此数据库的用户/用户,在添加用户时,它将询问用于访问数据库的用户名和密码。
 | ||
| 
 | ||
| 现在你的数据库正在运行url这样的东西 -
 | ||
| 
 | ||
| `mongodb://username:password@ds01316.mlab.com:1316/food`
 | ||
| 
 | ||
| 其中,用户名和密码是您添加用户时提供的详细信息。
 | ||
| 
 | ||
| 您可以在[https://mlab.com/databases/your _数据库_名称中](https://mlab.com/databases/your_database_name)找到您的数据库URL
 | ||
| 
 | ||
| ## 在Node.js中与MongoDB建立连接(当DB在本地系统上运行时):
 | ||
| 
 | ||
| 要使用数据库,首先需要创建连接。在本节中,我们将使用MongoDB的本机Node.js驱动程序来创建与MongoDB服务器的连接。要安装mongodb本机驱动程序,请使用npm命令安装mongodb模块。之后,在项目目录中运行以下命令。
 | ||
| 
 | ||
| `npm install mongodb`
 | ||
| 
 | ||
| 连接MongoDB的基本代码
 | ||
| ```
 | ||
| //lets require/import the mongodb native drivers. 
 | ||
|  var mongodb = require('mongodb'); 
 | ||
|  
 | ||
|  //We need to work with "MongoClient" interface in order to connect to a mongodb server. 
 | ||
|  var MongoClient = mongodb.MongoClient; 
 | ||
|  
 | ||
|  // Connection URL. This is where your mongodb server is running. 
 | ||
|  
 | ||
|  //(Focus on This Variable) 
 | ||
|  var url = 'mongodb://localhost:27017/my_database_name'; 
 | ||
|  //(Focus on This Variable) 
 | ||
|  
 | ||
|  // Use connect method to connect to the Server 
 | ||
|   MongoClient.connect(url, function (err, db) { 
 | ||
|   if (err) { 
 | ||
|     console.log('Unable to connect to the mongoDB server. Error:', err); 
 | ||
|   } else { 
 | ||
|     console.log('Connection established to', url); 
 | ||
|  
 | ||
|     // do some work here with the database. 
 | ||
|  
 | ||
|     //Close connection 
 | ||
|     db.close(); 
 | ||
|   } 
 | ||
|  }); 
 | ||
| ```
 | ||
| 
 | ||
| 有关使用MongoDB的更多示例,您可以参考此[博客](http://blog.modulus.io/mongodb-tutorial)
 | ||
| 
 | ||
| 我们需要知道我们的mongodb服务器在哪里运行。 url表示运行mongodb服务器实例的位置,以便我们可以连接到它。 url包含我们要连接的数据库名称。
 | ||
| 
 | ||
| 假设您的数据库正在上面提到的url上运行,现在让我们关注连接数据库的Url(本地)
 | ||
| 
 | ||
| `var url = 'mongodb://localhost:27017/my_database_name';`
 | ||
| 
 | ||
| ### 在Node.js中与MongoDB建立连接(当DB在您的`mLab`运行时):
 | ||
| 
 | ||
| 连接到`mLab` DB的URL如下所示
 | ||
| 
 | ||
| `var url = 'mongodb://username:password@ds01316.mlab.com:1316/food';`
 | ||
| 
 | ||
| 您可以用这个替换url变量,一切都将按照应有的方式工作,最后您的数据库在`mLab`安全可靠,您可以在其中查看您的收藏,用户,备份等。
 | ||
| 
 | ||
| ### 重要的提示:
 | ||
| 
 | ||
| 但是将您的用户名和密码提交到您的公共存储库有时非常危险,所以永远不要将它们提交到公共存储库,而是可以使用环境变量来存储URL(包含用户名和密码),以便在**本地**系统中执行此操作
 | ||
| 
 | ||
| 对于Mac / Linux用户,您只需键入:
 | ||
| 
 | ||
| `export MONGOLAB_URI="mongodb://username:password@ds01316.mlab.com:1316/food"`
 | ||
| 
 | ||
| 对于Windows用户:
 | ||
| 
 | ||
| `SET MONGOLAB_URI=mongodb://username:password@ds01316.mlab.com:1316/food`
 | ||
| 
 | ||
| 设置环境变量后,需要将环境变量调用到代码中。你可以输入这个来做
 | ||
| 
 | ||
| `var url = process.env.MONGOLAB_URI;`
 | ||
| 
 | ||
| 现在,您的MongoDb网址会安全地插入到您的代码中。您现在可以提交它并将其部署到您的heroku。
 | ||
| 
 | ||
| 如果您需要更多帮助如何部署到Heroku,您可以参考这个[Wiki](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Heroku-Deployment-Guide)
 | ||
| 
 | ||
| ## 最后的步骤:
 | ||
| 
 | ||
| 将代码部署到Heroku应用程序后,需要在heroku中为代码设置环境变量。
 | ||
| 
 | ||
| 为此,您需要从heroku远程运行以下命令,
 | ||
| 
 | ||
| `heroku config:set MONGOLAB_URI=mongodb://username:password@ds01316.mlab.com:1316/food`
 | ||
| 
 | ||
| 多数民众赞成,您的应用程序现已成功部署在带有`mLab` DB的heroku中 |