逐步实现Node.js+express增删改查( 一 )

逐步实现Node.js+express增删改查( 一 )

准备工作

全局安装 express-generator 项目构建工具:npm install -g express-generator

初始化文件 cd ~/Desktop && express expressApp && cd expressApp

安装依赖 npm install

替换原有语法模版因为这个更好用更贴近我们npm install --save nunjucks

View替换文件下载⏬:点击下载

把安装好的nunjucks 引入我们的app.js中

1
2
3
4
5
6
7
8
var nunjucks =require('nunjucks');
....
app.set('view engine','tpl');
nunjucks.configure('views',{
autoescape: true,
express: app,
watch:true
});

跑起来测试一下看看有没有问题npm start 地址http://localhost:3000/

安装项目依赖 npm install -save knex mysql

knex类似于查询器文档>>>https://www.songxingguo.com/2018/06/30/knex.js-query/

配置数据库里面的内容

  • Field:id
  • Field:name Type:VARCHAR LENGTH:255 Comment:姓名
  • Field:email Type:VARCHAR LENGTH:255 Comment:邮箱
  • Field:password Type:VARCHAR LENGTH:255 Comment:密码
  • 手动设置几个默认值,例如:

  • name:Jay email:jay@qq.com password:123456

  • name:Jeo email:jay@qq.com password:123456
  • name:Jax email:jay@qq.com password:123456
配置一下config.js文件链接数据库

根目录下新建config.js文件 📃

1
2
3
4
5
6
7
8
9
10
11
const configs = {
mysql: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: 'expressapp'
}
}

module.exports = config

为了避免上传私密文件或者一些重要的我们需要创建

gitignore

1
2
3
4
5
6
.DS_Store
.idea
npm-debug.log
yarn-error.log
node_modules
config.js

新建model层在其下添加knex.js 数据库的配置并初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
// 引用配置文件
const configs = require('../config');
// 把配置文件中的信息,设置在初始化配置中
module.exports = require('knex')({
client: 'mysql',
connection: {
host: configs.mysql.host,
port: configs.mysql.port,
user: configs.mysql.user,
password: configs.mysql.password,
database: configs.mysql.database
}
})

接下来就是要把数据库里设计好的数据通过 models/user.js 中设置获取所有用户的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//因为数据是从数据库中取出所以需要通过knex的连接来获取数据库的数据
const knew = require('./../models/knex');
//定义数据库表
const TABLE = 'users';
const User = {
// 获取所有用户的方法
all: function(){
// 返回 Promise
return new Promise((reslove,reject)=>{
// knex select 操作相关方法
knex.select().table(TABLE).then( res => {
reslove(res)
}).catch( err => {
reject(err)
})
})
}
}
module.exports = User

//查询构建器通过指定要查询的表名或通过直接在knex对象上调用任何方法来启动。这将启动类似jQuery的链,您可以根据需要调用其他查询构建器方法来构造查询,最终调用任何接口方法,将其转换为toString或返回一个promise对象,回调或链式执行查询。

//创建一个select查询,为查询提供可选的列数组,如果在构建查询时没有指定,则最终默认为*。select调用的响应将使用从数据库中选择的对象数组来解析。

//例:knex.select().table('books')

紧接着我们创建controllers/user.js 用户控制器设置展示方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 引用用户模版数据
const User = require('./../models/user.js');

const userController = {
// show 获取用户数据并返回到页面
show: async function(req,res,next){
try{
// 从模型中获取所有用户数据
const users = await User.all();
// 把用户数据设置到 res.locals 中
res.locals.users = users;
// 渲染到 views 视图目录的 user/show.tpl 路径中。
res.render('user/show.tpl',res.locals)
}catch(e){
res.locals.error = e;
res.render('error',res.locals)
}
},
}

module.exports = userController;

创建好控制器后我们需要去路由中引入使用

Express 支持对应于 HTTP 方法的以下路由方法法:getpostputheaddeleteoptionstracecopylockmkcolmovepurgepropfindproppatchunlockreportmkactivitycheckoutmergem-searchnotifysubscribeunsubscribepatchsearchconnect

1
2
3
var userController = require('./../controllers/users.js');
...
router.get('/user',userController.show)

响应方法

方法 描述
res.download() 提示将要下载文件。
res.end() 结束响应进程。
res.json() 发送 JSON 响应。
res.jsonp() 在 JSONP 的支持下发送 JSON 响应。
res.redirect() 重定向请求。
res.render() 呈现视图模板。
res.send() 发送各种类型的响应。
res.sendFile 以八位元流形式发送文件。
res.sendStatus() 设置响应状态码并以响应主体形式发送其字符串表示。

第一部分到这结束下一部分进入增删改查的主要过程~~~

我的GitHub地址:https://github.com/ragnar-document