什么是 express ?
express 官方网站
安装 express
npm 搜索,安装。按照文档一步一步进行
npm install express --save
在 express 中,request 对象 和 response 对象一样使用,同时这两个对象还额外添加了其他的好用功能
补充知识:
使用 express 框架模拟 Apache 服务器处理静态资源
主要使用到的方法express.static('public')
express.static('public')
的返回值就是一个函数,这个函数的作用就是根据请求,读取静态资源文件并响应给用户主要使用到的方法 app.use()
如何向客户端发送单个静态文件
托管静态资源时的两个注意点:
// 问题一、
app.use(express.static('./public'));
app.use(express.static('./file'));
// 问题二、
app.use('/aaa', express.static('./public'));
app.use('/bbb', express.static('./public'));
中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。
常规中间件(应用级中间件)的回调函数,一般有3个参数
可以挂在中间件的部分方法
中间件的应用场景
http://www.expressjs.com.cn/4x/api.html#req
http://www.expressjs.com.cn/4x/api.html#res
2、在 express 中使用模板引擎
- 在 express 中, res对象是具有redner方法的,但是需要自己配置一个模板引擎
- 在 express 中渲染单个文件,使用res.sendFile
- res.render()要在设置好模板引擎后再使用
- npm install ejs –save
- 通过 app.set(‘views’, ‘路径’); 和 app.set(‘view engine’, ‘模板引擎名称’);来配置模板引擎
- 配置好后就可以通过 res.render(‘a.ejs’, {})来渲染模板了
3、模板引擎后缀替换、
- 设置后缀为 .ejs
+ app.engine(‘.ejs’, require(‘ejs’).renderFile)
+ app.set(‘view engine’, ‘ejs’)
4、body-parser 使用
+ npm install
+ 在模块中 require(‘body-parser’)
+ 在 express 中配置
“`javascript
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json())
“`
# 其他
1. res.send() 方法
- 参数可以是字符串、Buffer对象、数组(json对象)、普通对象
- 通过调用该方法进行响应的时候,会自动添加一些响应头(Content-Type、Content-Length等)
MongoDB 是什么?
为什么选择 MongoDB
参考网站
Install on OS X
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/
Install on Windows
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
安装配置步骤:
启动时指定数据保存路径
mongod –dbpath d:\itcast\xx
mongo shell 客户端连接数据库
mongo shell 停止服务
use admin
db.shutdownServer();
// 1. 查看当前实例下有哪些数据库、
> show dbs
// 2. 查看当前在哪个数据库下面
> db
// 3. 进入某个数据库
> use sms
// 4. 查看当前数据库下有哪些集合
> show collections
// 5. 创建一个新的数据库(必须在该数据库下再创建集合,否则该数据库并不会创建)
> use NewDB
// 6. 向集合中插入数据
> db.xxx.insert({name: '小哥', age: 17, gender: 'boy'});
// 7. 查询集合中的数据
> db.xxx.find();
> db.xxx.find().pretty();
// 8. 条件查询
> db.xxx.find({age: 16});
> db.xxx.find({age: {$gt: 16}});
> db.xxx.find({age: {$gte: 16}});
> db.xxx.find({age: {$lt: 17}});
> db.xxx.find({age: {$lte: 17}});
// 9. 更新
// 9.1 替换,找到 name = '老公' 的,将这个对象替换成 {name: '老宫'}
> db.xxx.update({name: '老公'}, {name: '老宫'});
// 9.2 修改
> db.xxx.update({name: '花花'}, {$set: {gender: '女'}});
// 9.3 增长
$inc
> db.xxx.update({unitprice: 200}, {$inc: {id: 30}});
// 9.4 更新多行
> db.xxx.update({gender: '男'}, {$set: {name: '小明'}}, {multi: true});
// 10. 删除
// 全部删除
> db.xxx.remove({});
// 根据条件删除
> db.xxx.remove({age: {$gte: 18}});
{name: ‘steve’, age: 18}
{age: 18, name: ‘steve’}
{age: 18, name: ‘steve’, age: 20}
c:\data\db\
--dbpath
指定数据服务存储数据的目录mongod
启动服务--dbpath
, mongod 会自动使用 执行命令所属磁盘根目录/data/db
目录作为自己的数据存储路径,所以,如果当前磁盘已经有了 磁盘根路径\data\db
目录了,可以省略 --dbpath
。
千万不要关闭,否则关闭终端就是关闭数据库了,
127.0.0.1:27017
mongo --host 127.0.0.1 --port 27017
数据服务实例 -> 数据库 -> 表 -> 记录
在一个数据服务中可以有多个数据库
show dbs
use 数据库名称
db
db.集合名称.insert(数据文档)
show collections
db.集合名称.find()
db.集合名称.find().pretty()
美化输出格式db.集合名称.find({查询条件})
按条件查询集合中的数据db.集合名称.update({更新条件}, {$set: {要更新的字段}})
db.集合名称.remove({删除条件})
参考文档:https://docs.mongodb.com/manual/crud/
安装:
npm install mongodb --save
CRUD:
参考文档:
- https://www.npmjs.com/package/mongodb#connecting-to-mongodb
- http://mongodb.github.io/node-mongodb-native/2.2/
var mongodb = require('mongodb')
// 连接路径URL
var url = 'mongodb://localhost:27017/itcast'
var MongoClient = mongodb.MongoClient
// ================== 插入数据 ==================
// 1. 连接数据库(打开冰箱门)
// MongoClient.connect(url, function (err, db) {
// if (err) {
// throw new Error('连接失败')
// }
// // 2. 把大象放到冰箱
// db
// .collection('heros')
// .insert({ name: '张飞', gender: '男', age: 23 }, function (err, result) {
// if (err) {
// throw new Error('插入数据失败')
// }
// console.log(result)
// // 3. 关上冰箱门
// db.close()
// })
// })
// ================== /插入数据 ==================
// ================== 查询数据 ==================
// MongoClient.connect(url, function (err, db) {
// if (err) {
// throw new Error('连接失败')
// }
// // 查询所有
// // db.collection('heros').find({}).toArray(function (err, docs) {
// // if (err) {
// // throw new Error('查询数据失败')
// // }
// // console.log(docs)
// // })
// // 按条件查询
// db.collection('heros').find({name: '张飞'}).toArray(function (err, docs) {
// if (err) {
// throw new Error('查询数据失败')
// }
// console.log(docs)
// })
// })
// ================== /查询数据 ==================
// ================== 更新数据 ==================
// MongoClient.connect(url, function (err, db) {
// if (err) {
// throw new Error('连接失败')
// }
// db.collection('heros').updateOne({name: '张飞'}, {
// $set: {
// age: 20
// }
// }, function (err, result) {
// if (err) {
// throw new Error('更新失败')
// }
// console.log(result)
// })
// })
// ================== /更新数据 ==================
// ================== 删除数据 ==================
// MongoClient.connect(url, function (err, db) {
// if (err) {
// throw new Error('连接失败')
// }
// db.collection('heros').deleteOne({name: '张飞'}, function (err, result) {
// if (err) {
// throw new Error('删除失败')
// }
// console.log(result)
// })
// })
// ================== /删除数据 ==================
MongoDB 概念解析
在mongodb中基本的概念是文档、集合、数据库,。
SQL术语/概念 MongoDB术语/概念 解释/说明:
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
参考:http://www.runoob.com/mongodb/mongodb-query.html