【Node JS】03. 连接数据库 - MongoDB

本文详细介绍如何在Node.js环境中安装并使用MongoDB数据库,包括创建数据库、建立数据表及实现用户登录验证等功能。

【吐槽篇】

范大将军和小飞侠又进球了!我最爱的橙色也在这几天变成橙衣军团了大笑

美国Uber估价160亿美金,对于这种天文数字我也只好脑补有多少个0羡慕。不过在了解uber后发现它真的不止是一个打车软件而已(我以前很文盲,在旧金山一直用这款软件打车,以为这就是它的全部)。人家的那个愿景比Amazon还要帅气好吗?对于大数据的研究和应用将会使“在你想要车的时候,一辆好车就在你身边,同时还知道你或者你身边的人需要什么,顺便就帮你带来了。这一次性解决多人烦恼,还总是超出预期,真是居家旅行必备之良药啊!”。IBM的smarter planet愿望难不成就要靠它了?

昨天去了趟成都,我会告诉你我打车花了1个小时最后打到的是一辆野的吗?不多说了,说多了都是泪哭


【正文篇】

1. 安装MongoDB

去这里找到对应你OS的包,然后安装

MongoDB 需要一个存放数据的目录, 在linux或Mac上你可以使用


$ mkdir -p /data/db.

在windows上使用


$ md \data\db

这个也是默认的目录,你可以改到其他你想要存放的地方。具体可以参考 MongoDB Quickstart Guide 。

装好以后你就可以在命令行里输入


$ mongod


这样你的mongodb的server就启动了!默认的端口是27017.


3.在Node JS中使用MongoDB

那我们就做一个网页登陆的页面吧。


首先我们需要在MongoDB里面创建这个数据库,具体怎么操作呢?

打开命令行,确保你的MongoDB server是在运行中 (使用"mongod即可开启DB服务器),然后敲入下面命令

$mongo
进入MongoDB的命令行中后输入

$use mytestdb
这时你的窗口中会显示"switched to db mytestdb",mytestdb就建好了。

接下来我们做一个table,里面放上userid, name和password。在你的mongo命令行里加上下面的两个命令。

$db.users.insert({userid:'user1',name:'lilei',password:'password'}) 

$db.users.insert({userid:'user2',name:'hanmeimei',password:'password'}) 
好了,现在我们在users table里面加入了两个user。你可以使用

$db.users.find()
来确认你加入的用户。

到此,我们在MongoDB这边要做的准备就结束了。


接下来,你需要合适的node模块来帮你连接和使用MongoDB。这里我们选用Mongoose。使用以下命令安装:

npm install <code class="javascript"><span class="s1">mongoose</span></code>
如何在js中连接mongoDB呢?为了方便起见,我们继续使用上一篇所建的express 框架。 在工程的routes目录下我们建一个modules.js文件,加入以下代码
var mongoose = require('mongoose');    //引入模块

var Schema = mongoose.Schema;  //创建一个新的模式,此时为空

var UserSchema = new Schema({

         userid: String ,

         name: String ,

         password: String

});    //现在定义我们所需要的模式

exports.User =mongoose.model('User',UserSchema);     //将模式与User关联并使其外部可用


然后我们需要修改routes目录下的index.js文件。这个文件用来处理在index页也就是登录页面下的form post request。修改成下面代码

var express = require('express');
var router = express.Router();

var mongoose = require('mongoose') ;    
var models = require('./models') ;    

var User = models.User ;       

mongoose.connect('mongodb://localhost/mytestdb') ;  //连接到我们所需要的数据库  
/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'MongoDB Case Study' });
});

router.post('/', function(req,res){
     var query_doc = {userid:req.body.userid , password:req.body.password} ;    //拿到form post body里面的userid和password

         User.count(query_doc,function(err,doc){

                   if(doc == 0) {      

                            res.render("users",{
                            message: "Username or Password is incorrect!"
                            }) ;

                   } else {       

                            res.redirect("/users?uid=" + req.body.userid) ;      

                   }

         }); //在mongoDB中找是否有配对的userid和password。如果有,我们使用redirect到users页面,同时把userid 放在query string里
             //如果找不到配对的,在users页面上显示错误。
});

module.exports = router;

接着我们使用已有的users路由,只需要改变user.js里面的逻辑。代码如下

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res) {
     var userid = req.query.uid;
	 var message = 'Welcome ' + userid;  //显示登录成功的userid

  res.render('users', { title: 'From MongoDB' , 
			message: message
 });
});

module.exports = router;

最后我们要改的当然是我们的view模块了。除了改掉已有的index.jade, 我们还创建了users.jade。

在index.jade中,我们需要一个最简单的login表格

extends layout

block content
h1 User Login
form(method='post')
  | User ID:
  input#userid(type='text', name='userid')
  br
  | Password:
  input#password(type='password', name='password')
  br
  input(type='submit', value='Login')

在users.jade中,我们暂时只显示登录是否成功。

extends layout

block content
  h1= message

这样一个简单的登录网页就做好了。使用

$npm start

开始测试你的程序吧!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值