课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》
课程章节:第5章 LinValidator校验器与Sequelize Orm生成MySQL数据表
视频:5-6 Sequelize初始化配置与注意事项
5-7 User模型与用户唯一标识设计探讨
课程讲师: 七月
课程内容:
用Sequelize创建数据表,步骤:用Sequelize连接数据库,配置一些数据库的参数
new Sequelize时可以接受四个参数:数据库名称、账号、密码、{}
Sequelize可以连接多种数据库。
//config.js中加入数据库的配置项 module.exports = { environment: 'dev', //dev开发环境。 prod生成环境 databse: { dbName: 'koa', host: 'localhost', port: 3306, user: 'root', password: '123456' } }
//db.js const Sequelize = require('sequelize') const { dbName, host, port, use, password } = require('../config/config').database const sequelize = new Sequelize(dbName, user, password, { dialect: 'mysql', host, port, logging: true, timezone: '+08:00', define: { } }) module.exports = { db: sequelize //实际上导出的名称是db }
主键最基本的两个条件是:不能重复,不能为空。
主键id设计的问题:建议一定是数字,不要用字符串,因为数字的查询性能最好,不要使用随机字符串。
GUID数据量大的时候,查询会比较慢。
安全的系统应该是: 即便知道了别人的id,也不应该拿到别人的数据。
接口必须要有token令牌的保护,否则是不安全的接口。
如果字段在数据表中是主键,可以在init的配置中增加primaryKey:true的配置项
如果字段是自增,可以增加autoIncrement: true的配置项
STRING后边可以加括号,括号中的数字可以定义字段的长度
unique:true可以定义字段是唯一的的。
const { db } = require('../../core/db') const { Sequelize, Model } = require('sequelize') class User extends Model { } User.init({ id: { Type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, nickname: Sequelize.STRING, email: Sequelize.STRING, password: Sequelize.STRING, openid: { type: Sequelize.STRING(64), unique: true } })
课程收获:
本节课讲述了如何用代码创建数据库的表。以及如何所以Sequelize连接数据库,和创建数据表。
课程最后七月老师还讲了ID编号设计的问题。
七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。