express框架
产生的原因:
1.http模块在处理路由这块比较鸡肋
2.http模块在处理静态资源时比较麻烦
3.http在获取浏览器的提交过来的参数时很麻烦
4.express能解决url中有中文时,express能自动解码
基本概念:
express是nodejs发送网络请求的第三方框架,是NodeJS中一个优秀的 web 解决方案
地址:
https://www.npmjs.com/package/express
https://github.com/expressjs/express
安装:
npm i/install express --save
express使用步骤
利用express开启web服务器的步骤:
1、在当前项目中使用 npm i/install express --save
2、导入express包
3、利用express对象创建一个application对象 app
4、在app对象上就有一系列方法(get,post)还可以可以分别设置请求路由
5、利用app.listen()监听端口
GET方法获取参数:
直接从 req.query中就可以获取,非常简单
POST方法获取参数:
使用一个第三方包 body-parser
express的路由
/man/xz
/man/ld
/woman/qz
/woman/sw
如何使用:
1.将某一类路由规则放入到一个js文件中,写好相应的代码,并且暴露出去
const express = require('express');
let route = express.Router(); //创建一个路由
路由的处理...
module.exports = route; //将创建的路由对象暴露出去
2.在启动服务器的js文件中,导入对应的路由,并且调用app.use方法使用即可
const route = require('路由的路径');
app.use('路由规则',route); //哪些路由规则适用于该路由
开发注意事项:
设置路由一定要写在入口文件的代码后面一些,最好写在app.listen(xx) 的前一行即可;
express之next方法
使用方式:(有两种)
第一种:连写方式,用得比较少
app.get('/',(req,res,next)=>{
res.write('1.0 ');
next();
},(req,res,next)=>{
res.write('2.0 ');
next();
},(req,res)=>{
res.end('3.0 end');
});
第二种:分开写,用得比较多
app.get('/',(req,res,next)=>{
res.write('1.0');
//触发下一个同样的路由的回调函数
next('route');
});
app.get('/',(req,res)=>{
res.end('2.0');
});
调用的过程分析:
当浏览器请求 http://127.0.0.1:8888/
触发第一个回调函数,当在第一个回调函数中手工执行next()的时候
就会触发第二个回调函数,一直下去直到最后一个回调函数被执行,那么最后
这个回调函数可以不用写next参数
使用注意:
触发下一个同样的路由的回调函数,路由必须一致
express之通配符方法(all)与next方法联合起来做权限验证
使用方式:
app.all('路由',(req,res,next)=>{
if(登录过){
next(); //继续往下执行真正的请求
}else{
res.end("请登录"); //提示用户登录
}
});
注意点:
app.all(xxx); 一定要在所有路由的最前面
express静态资源处理
使用方式:
app.use(express.static('静态资源路径'));
访问时的注意点:
如果浏览器要访问statics下面的site.css
url应该是 http://127.0.0.1:8888/site.css
如果是http://127.0.0.1:8888/statics/site.css 反而报错
如果是statics下面的字母中的静态资源,则一定要在url中加上子目录
注意点:
设置在路由或是app.use(路由),之前
要在两个地方写,一个是html里面,还有一个地方是入口的js文件
MongoDB
数据库概念
数据库:数据存储的仓库
数据库就是为我们方便的管理数据的一个平台,例如对数据的存储、修改、查询等都非常的方便。
数据库分类
数据库产品有很多,以下是一些常见的数据库产品:
- MySQL
- Oracle
- DB2
- SqlServer
- MongoDB
- etc.
数据库没有排名之分,各有各的应用场景,这里学习的是 MongoDB 数据库。
MongoDB 数据库
为了更好的学习 MongoDB 数据库,大家可以参考菜鸟教程上的 MongoDB 数据库教程文档,
链接地址:http://www.runoob.com/mongodb/mongodb-tutorial.html
mongodb数据库官网:https://www.mongodb.com/
下载地址:https://www.mongodb.com/download-center?jmp=nav
选择好对应的版本下载即可
为什么选择MongoDB?
理由:
1.只要会js/json就会mongodb(学习成本低)
2.mongodb对js的兼容性最好
3.mongodb存数据就是存JSON
安装与配置 MongoDB 数据库环境
详情见视频:
怎么验证安装成功:
在cmd终端中输入: mongo --version 或是 mongod --version ,能看到版本好,说明安装成功
如果终端中输入 mongo --version 提示找不到命令,一定要看看是不是没有配置mongodb的环境变量,并且配置环境变量之后一定要记得重启cmd
window7安装MongoDB存在的问题
建议:升级到window10
解决步骤:
1.将你的操作系统升级到window7最新版
2.安装 vc_redist.x64.exe
3.如果你的电脑是32位的,再安装32位的mongodb软件 mongodb-win32-i386-3.2.11-signed.msi
MongoDB 数据库存储结构
[图片上传失败...(image-d75d13-1513870122297)]
和Excel对比一下即可明白:
Excel MongoDB
创建工作簿 创建数据库
创建一个sheet(工作表单) 创建集合
确立表头,插入数据 插入文档(确立表头)
核心思想:
1.分门别类的存储数据
2.mongodb是以`集合`的概念来区分不同数据的,比如用户集合,商品集合,订单集合等等,不同的数据要放在不同的集合中去统一管理
3.集合里面存储的可以认为是一个数组
4.数组中的每一个对象,可以认为就是JSON对象,在mongodb中我们称之为 `文档`
5.文档的结构可以随意,但是必须统一,也就是说,同一个集合中,所有的文档一定要遵守相同的数据结构
其他:
`集合`的作用就是用来隔离数据,分门别类的存储数据
操作MongoDB的步骤
1.创建数据库中数据的存储目录
2.启动MongoDB的服务实例
3.创建数据库
4.创建集合
5.创建文档
MongoDB使用之前必做步骤1--创建数据目录(必须)
我们在安装完成MongoDB后需要创建一个存放数据的目录。请注意,数据目录应该放在根目录下((如: C:\ 或者 D:\ 等 ),数据目录的命名随意,比如我就命名 mongodb_datas
MongoDB使用之前必做步骤2--启动服务器(必须)
启动MongoDB服务器的方式一:通过终端指令去启动
1.首先在终端切换到你的MongoDB的安装目录的bin目录下(当然如果配置了环境变量在哪个目录下都可以了)
2.在终端执行: mongod.exe --dbpath c:/mongodb_datas ,如果成功启动就表示一切都OK了
注意点:
1.32 位版本使用下面的命令启动数据服务:
```
mongod --dbpath 数据存储路径 --journal --storageEngine=mmapv1
```
2.执行完上面的命令并成功开启 MongoDB 数据服务实例之后,就把该控制台最小化到一边就可以了,
千万不要关闭,否则无法连接,如果对数据库的操作结束,可以打开该控制台通过 `Ctrl + C` 关闭。
启动MongoDB服务器的方式二:方式一的延续,把上面的指令做成一个批处理文件.bat
启动MongoDB服务器的方式三:将MongoDB服务器作为Windows服务运行
请注意,你必须有管理权限才能运行下面的命令。执行以下命令将MongoDB服务器作为Windows服务运行:
例子:
mongod.exe --bind_ip 127.0.0.1 --logpath "C:/mongodb_datas/server_log/mongodb.log" --logappend --dbpath "c:/mongodb_datas" --port 27017 --serviceName "MongoDBServer" --serviceDisplayName "MongoDBServerDisplayName" --install
补充:从Windows服务中卸载 MongoDB服务
1.先停止要删除的服务(比如MongoDBServer)
2.以管理员身份运行cmd,在cmd中输入: sc delete 服务名称(比如MongoDBServer)
注意点:
1.mongodb.log 这个日志文件一定要先创建好,才能执行指令
2.必须要以管理员的身份打开cmd窗口,并运行
如何连接到MongoDB服务器并且操作它?
注意:在进行连接之前请确保你的服务实例是开启状态的(不要关闭刚才开启的数据服务实例)。
可以使用两种方式来连接到MongoDB服务器并且操作它
连接方式1:使用MongoDB自带的MongoDB后台管理 Shell
在终端中输入 mongo 或是 mongo --host 127.0.0.1 --port 27017
mongo 命令默认去连接本机上的 MongoDB 服务实例:`127.0.0.1:27017`,可以通过下面的命令
指定连接的主机名和端口号:
```
mongo --host 127.0.0.1 --port 27017
```
如果看到类似于如下的字样说明连接成功:
```
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
Server has startup warnings:
2017-01-18T18:49:53.865+0800 I CONTROL [initandlisten]
2017-01-18T18:49:53.865+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-18T18:49:53.866+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-01-18T18:49:53.866+0800 I CONTROL [initandlisten]
>
```
如果提示 “无法连接主机”,请检查你的 MongoDB 数据服务实例是否开启。
操作方式1:在终端中使用mongodb的指令进行操作
常见指令:
见下一个知识点
连接及操作方式2:使用图形化客户端工具:
robomongo(跨平台) : https://robomongo.org/download
基本操作命令
可以参考:
http://www.yiibai.com/mongodb/mongodb_create_collection.html
http://www.runoob.com/mongodb/mongodb-tutorial.html
-
show dbs
- 查看当前服务实例上所有的数据库
-
use 数据库名称
- 如果数据库不存在,则创建数据库,否则切换到指定数据库。
-
db.dropDatabase()
- 删除数据库,注意,要在切换的数据库中删除
-
db
- 查看当前所处的数据库
-
show collections
- 查看当前数据库中所有的集合
-
db.createCollection("集合名称")
- 创建集合
-
db.集合名称.drop()
- 删除集合
-
db.集合名称.insert({数据文档})
- 插入的每一条文档会自动帮我们生成一个
_id
字段,它是mongodb自动维护的,不需要我们关心
- 插入的每一条文档会自动帮我们生成一个
-
db.集合名称.find()
- 查询指定集合中所有的数据
- 可以通过
db.集合名称.find().pretty()
美化输出格式 - 默认是查询所有,可以通过:
db.集合名称.find({查询条件})
按条件查询集合中的数据 - 模糊查询的条件 {要查询的字段:{$regex: '关键字'}}
-
db.集合名称.update({更新条件}, {要更新的字段})
- 更新指定集合数据,注意点,要更新的字段一定要这样写 {$set:{字段的名称:字段的值}},
-
db.集合名称.update({更新条件}, {要更新的字段},{multi:true})
- 更新多条文档,{multi:true}默认是false
-
db.集合名称.remove({删除条件})
- 删除指定集合中的数据
-
db.集合名称.remove({删除条件},{multi:true})
- 删除多条文档,{multi:true}默认是false
exit
退出当前操作-
cls
清屏注意点:更新和删除时一般都需要带条件,除非是全部更新与全部删除,不过全部更新与全部删除这样很危险,实际操作过程中很少
使用 Node 操作 MongoDB
安装 MongoDB 官方提供的驱动包:
npm install --save mongodb
具体操作方式请参考官方文档:https://www.npmjs.com/package/mongodb