本文纯属个人笔记,毫无指导倾向和价值!
使用 Express + mongodb 写了个基于 nodejs 的图书借阅的小demo。
总览
先在项目目录中安装相关模块:
npm install node
npm install express ejs
不想使用 jade 模板,于是使用了 ejs 直接书写 html 标签。html 文件全部放在 views 目录下。
CSS 是用 Sass 预处理来写的。CSS 文件全部放在 public 目录下。
最关键的逻辑处理,全部写在了 app.js 中。

数据库
没怎么接触过数据库,MongoDB 看上去倒是更适合新手了。
它有的是 { "name":"mike", "id":"001" }
这样 json 格式的数据,这些数据被分组放在数据集(collection)中。
先说如何与 MongoDB 建立联系
- step1:在需要的位置(我的位置是 /User/willli/Site )新建一个文件夹(我直接命名mongodb),将官方下载的压缩包解压到文件夹中。
- step2:在 mongodb 文件夹下新建 data 文件夹,在 data 文件夹下 新建 db 文件夹用来存放数据。
- step3:来到命令行终端,设置权限:
sudo chown -R /User/willli/Site/mongodb/data
- step4:进入到 mongodb 的 bin 目录,设置 db 文件夹为存储数据的路径:
./mongod --dbpath /User/willli/Site/mongodb/data/db
- step5:打开浏览器输入:localhost:27017,看到“It looks like you are trying to access MongoDB over HTTP on the native drive port”,则说明与数据库建立了连接。
- step6:打开一个新的终端,还是进入到 bin 目录下,输入
./mongo
,至此便可进行对数据库的操作了。
再说 MongoDB 的基本操作语句
沿着上面 step6 启动数据库后,就可以使用基本语句对数据库进行操作了。
-
use myDatabase
(myDatabase 是自己取的名字哦)创建一个数据库,easy-peasy 有木有,但还没完,需要即刻向这个新建的数据库中添加数据才算完成,否则这个数据库并没有建立。
💡其实use myDatabase
应该理解为使用、选择了一个数据库,如果没有名字叫做 myDatebase 的数据库,则尝试新建一个,当新建并添加了数据之后,myDatabase 也就建立成功了。 -
show dbs
查看数据库。 -
db.createCollection('myCollection')
(myCollection 依然是自己取的名字)创建一个数据集合(表)。 -
show collections
查看当前数据库中的表。 -
db.myCollection.insert({"name":"Allen"})
在 myCollection 表中添加了一条 {"name":"Allen"} 的数据。 -
db.myCollection.find()
查询 myCollection 中所有数据;
db.myCollection.find({"name":"Allen"})
查询 myCollection 中 name 为 Allen 的数据;
db.myCollection.findOne()
查询 myCollection 中第一条数据;
db.myCollection.findOne({"name":"Allen"})
查询 myCollection 中 name 为 Allen 的第一条数据。 -
db.myCollection.updata({"name":"Allen"}, {$set: {"id":"008"}})
改变 myCollection 中 name 为 Allen 的数据的 id 为 008。 -
db.myCollection.remove({"id":"008"})
删除 myCollection 中 id 为 008 的数据。
在 nodejs 中操作 MongoDB:
首先要把 MongoDB 的连接配置弄好:
const mongodb = require('mongodb'),
server = new mongodb.Server('localhost',27017,{auto_reconnect:true}),
db = new mongodb.Db('mydb',server,{safe:true}),
url = 'mongodb://localhost:27017/budiubook';
这里👆,细节我无法说的太清晰,大概就是引入 mongodb,设置服务端口、自动连接和用来访问的 URL。
然后,这里演示一个查询操作👇
mongodb.connect(url, function(err, db){
if(!err){
console.log('database connected !');
db.collection('myCollection').find({"name":"Allen"}, function(err, res){
console.log(res);
})
}
else{
console.log('ooops');
}
})
Express
那么 Express 框架大致如何使用呢?
我在项目中的 app.js 文件中实现。
const express = require('express'),
port = process.env.PORT || 3000,
app = express();
app.listen(port);
👆主要做的事情就是引用 express,设置端口,监听端口。并且以 app 引用了 express(),这样使用 Express 方法时可以这样书写 app.name()
了。
现在来到项目根目录位置,输入 node app.js
便启动了项目。
使用的几个“部件”
- 静态资源路径部件:
const path = require('path');
app.use(express.static(path.join(__dirname, 'public')));
- ejs 引擎:
用来解析 html 文件
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
- 表单验证部件:
其实是使用request.body
来接收前台传递的数据
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
- 访问控制部件:
存储用户的登录状态
const session = require('express-session');
app.use(session({
secret:'secret',
resave:true,
saveUninitialized:false,
cookie:{
maxAge:1000*60*30 //过期时间设置(单位毫秒)
}
}));
配置好后使用如下代码存储
app.use(function(req, res, next){
res.locals.user = req.session.user;
next();
});
主要方法
使用了 get 和 post 两个方法完成所有页面渲染和数据接收。
- get 方法
app.get('/index', function(request, result){
result.render('index', {
data: "username"
})
})
👆可以渲染 index.html 页面了,并且在页面中可以访问 data 👇
<span><%= data %></span>
- post 方法
假设有一个 ajax 请求发送了数据,便可以使用 post 方法来接收👇
app.post('/login', function(request, result){
let name = request.body.name;
console.log(name);
})
网友评论