Blog
Blog copied to clipboard
Node+Mongodb+Express简单例子
好久没更新blog了,其实也不知道到底该写写什么,恰好最近在学习node还有一大堆新玩意儿,就随便写写吧。
谈谈安装
- Node的安装在这里就不说了,还不知道怎么搞定的,可以看看官网 --> https://nodejs.org
- Express 的安装可以直接使用命令 npm install -g express ,安装完成后,可以输入命令 express -V 查看当前 express 的版本号
- 你可以使用命令 npm install mongodb 或是去 Mongodb 的官网(https://www.mongodb.org/)下载安装包。这里我推荐后者,前者具体原因在这里我就不说了。安装包下载好后,下一步下一步... 安装好后,使用cmd进入mongodb安装目录,而且是 bin 目录下!
- 最后我们还需要安装 Mongoose 命令: npm install -g mongoose
创建项目
我们使用cmd进入到你想创建项目的位置,然后输入命令 express 你的项目名称 这时候会提示你 destination is not empty 直接输入 y 然后回车即可。

Express默认 HTML 模板采用的是 Jade ,当然你也可以使用其他的模板。
目前 Express 已为我们新建了一个基础的前端架子,我们可以使用命令: npm install 来下载需要用到的模块。 npm start 来启动项目。项目默认地址是:http://localhost:3000/ 。
数据库相关
我们先在项目目录下新建一个文件夹用来存放该项目的数据库(这里新建了一个db文件)。 使用cmd 进入Mongodb 安装目录下的bin目录 ,输入命令:mongod --dbpath F:\test\db 这样数据库就连接上了。
我们在另开一个cmd 同上进入bin目录,然后输入命令:
- mongo //进入数据库
- use test //创建项目数据库
- db.createCollection("users") //创建一个集合,也就是表
- db.users.insert({userid: "admin", password: "123456"}) //给users里添加一个文档,也就是一条记录账号admin,密码123456
- db.users.find() //如果看到你刚刚添加的文档记录,就ok咯
项目文件
- 在models下创建一个user.js,作为实体类映射数据库的users集合
var mongoose = require("mongoose"); // 顶会议用户组件
var Schema = mongoose.Schema; // 创建模型
var userScheMa = new Schema({
userid: String,
password: String
}); // 定义了一个新的模型,但是此模式还未和users集合有关联
exports.user = mongoose.model('users', userScheMa); // 与users集合关联
- 在views下面建index.jade,login.jade, logout.jade, homepage.jade 。 (index是自带的,不用建)
Index.jade
extends layout
block content
h1 Hello,Express !
a(href='/login') 登陆
Login.jade
extends layout
block content
form(action="homepage" method="post")
p
span
|用户名:
br
input(id="userid" name="userid" type="text")
p
span 密码:
br
input(id="password" name="password" type="password")
p
span 年龄:
br
input(id="age" name="age" type="text")
p
span 备注:
br
textarea(id="beiz" name="beiz")
p
input(type="submit" value="提交")
Logout.jade
extends layout
block content
p 正在登出...
script(src="/javascripts/out.js")
Homepage.jade
extends layout
block content
p
a(href="/logout") 登出
- 在routes下的index.js配置路由,也就是请求映射处理
var express = require('express');
var router = express.Router();
var mongoose=require('mongoose');
var user=require('../models/user').user;
mongoose.connect('mongodb://localhost/nodes');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Index' });
});
/* GET login page. */
router.get('/login', function(req, res, next) {
res.render('login', { title: 'login' });
});
/* GET logout page. */
router.get('/logout', function(req, res, next) {
res.render('logout', { title: 'logout' });
});
/*hompage*/
router.post('/homepage', function(req, res) {
console.log(req);
var query_doc = {name: req.body.name, password: req.body.password};
(function(){
user.count(query_doc, function(err, doc){
if(doc == 1){
console.log(query_doc.name + ": login success in " + new Date());
res.render('homepage', { title: 'homepage' });
}else{
console.log(query_doc.name + ": login failed in " + new Date());
res.redirect('/');
}
});
})(query_doc);
});
module.exports = router;
ok,简单的例子就大功告成啦!
对于入门非常不错的: