【吐槽篇】
范大将军和小飞侠又进球了!我最爱的橙色也在这几天变成橙衣军团了。
美国Uber估价160亿美金,对于这种天文数字我也只好脑补有多少个0。不过在了解uber后发现它真的不止是一个打车软件而已(我以前很文盲,在旧金山一直用这款软件打车,以为这就是它的全部)。人家的那个愿景比Amazon还要帅气好吗?对于大数据的研究和应用将会使“在你想要车的时候,一辆好车就在你身边,同时还知道你或者你身边的人需要什么,顺便就帮你带来了。这一次性解决多人烦恼,还总是超出预期,真是居家旅行必备之良药啊!”。IBM的smarter
planet愿望难不成就要靠它了?
昨天去了趟成都,我会告诉你我打车花了1个小时最后打到的是一辆野的吗?不多说了,说多了都是泪。
【正文篇】
去这里找到对应你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关联并使其外部可用
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
开始测试你的程序吧!