一、三种连接数据库服务的方式
- 使用命令行来连接$mongo 在一个数据库服务的下面,可以有多个数据库
- 使用可视化工具,比如robo3T navicat
- 使用编程语言对应的驱动 (代码来连接)
二、使用 express-generator 搭建工程项目
1、express 简介
- express官网
- express的优势:让Web开发更简洁,这也是框架存在的意义。
- 学习 express-generator 这个脚手架工具
- express安装:npm install express -S
2、使用express-generator初始化项目
npm install express-generator -g
express --view=ejs project // -e 指的是使用 EJS模板引擎
cd project
npm install
npm start // nodemon ./bin/www
3、详解express-generator脚手架搭建的项目架构
(1)package.json文件详解
body-parser 用于解析HTTP请求体中的body数据
cookie-parser 用于解析cookie会话数据
ejs 页面模块
morgan 是一个日志工具
serve-favicon 用于设置网站的favicon
(2) /bin/www 入口文件详解
端口号设置
服务启动时的事件监听onError / onListen
(3)app.js文件详解
中间件:next()表示交给下一个中间件处理
路由配置:res.render('index', {})渲染index模板引擎
模块引擎的配置
express.static(),设置静态资源目录
bodyParser中间件,用于处理form表单默认的 application/x-www-form-urlencoded 数据编码
cookieParser中间件,用于解析cookie数据
404中间件,渲染error模板引擎
(4)路由详解
不能两次调用 res.send()
向前端发送文件
res.sendFile(__dirname+'form.html')
如何定义一个路由?
router.get('/xxx',function(req,res,next){})
router.post('/xxx',function(req,res,next){})
同时支持GET/POST:
router.all('/xxx', function(req,res,next){})
路由可以使用正则表达式
router.get('/ab*cd', fn)
(5)ejs模板引擎详解
结合ejs官网,介绍什么是ejs?
常用标签介绍(在代码中演示一下这些标签的用法):
<% %> 流程控制标签,用于包裹js代码
<%= %> 直接输出值,不对“值”执行解析
<%- %> 输出值,会对“值”中的HTML进行解析
<%# %> 注释标签
% 对特殊符号进行转义,如 %%
<%- include('head', data) %>
express渲染ejs的语法:
res.render('ejs', data, options)
三、mongoose 模块连接数据库
- 安装 : npm install mongoose -S
- 相关文档:
Mongoose快速上手
mongoose
mongoose中文网 - 使用express-generator脚手架,创建工程项目
npm install express-generator -g
express --view=ejs project // -e 指的是使用 EJS模板引擎
cd project
npm install
npm start // nodemon ./bin/www
- 使用mongoose驱动,连接数据库
var mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/test', {
useNewUrlParser: true,
useUnifiedTopology: true
})
var db = mongoose.connection
db.on('error', function(err) {
console.log('数据库连接成败')
})
db.once('open', function() {
console.log('数据库连接成功')
})
- 使用mongoose创建Model模型,用于对集合进行增删改查
ar mongoose = require('mongoose')
var userSchema = mongoose.Schema({
name: String,
age: Number
})
var userModel = mongoose.model('users', userSchema)
module.exports = userModel