模型与测试
安装 password-hash 与测试
用来处理用户密码,不存储用户的明文密码,而是存储加密后的。
npm i password-hash -S在 src 目录下面创建 db.ts , 定义模型我们使用define方法, 这些都是有代码提示的。
import * as Sequelize from 'sequelize';
import * as ph from 'password-hash';
import { resolve } from 'path';
const sq = new Sequelize('db', null, null,{
dialect: 'sqlite',
storage: resolve(__dirname, '../storage/db.sqlite3')
});
var User = sq.define('user', {
id:{
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: {
type: Sequelize.STRING,
},
email: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
}
}, {
timestamps: false,
freezeTableName: true // Model tableName will be the same as the model name
});
User.create({
username: 'yugo',
email: 'belovedyogurt@gmail.com',
password: ph.generate('123456')
}).then(console.log)首先编译
之后再运行
这样我们就可以在数据里面看到我们的数据了。
编写 Model 与 ava 测试文件
之前我们是把js文件编译到dist目录下管理,假如我们的test下面的测试文件也跑到dist目录下面的话就感觉很别扭,因为它没有在它该在的位置上,也就是不在其位而谋其政,尽管我们可以通过写2个 tsconfig.json 和 配置 exclude 选项让它们分开编译来解决这个问题,我们还不如就让 js 和 ts 在同一目录下来的简单。
修改我们的 db.ts 我们让他仅仅只提供数据库连接。
修改 tsconfig.json
在根目录下面新建一个 types 文件夹,在这里面你可以写你的代码提示文件,但是并不会被转换成模块。
在 src 目录下面创建 model 文件夹,新建 todo.ts 、 todoFolder.ts、 user.ts 三个文件。
model 下面都是存放我们的模型,通过 hasMany 定义模型之间的关系。
todo.ts
todoFolder.ts
user.ts
为了确保这些 model 都已经正确可用了,我们需要编写我们的测试文件。
首先全局安装 ava 测试套件
在根目录初始化 ava 套件
在根目录下面创建 test 文件夹,在里面新建 user.ts
一定不要把异步函数传给闭包,要不然有一些你意想不到的后果。
每次运行测试之前必须先运行 tsc 编译好,之后再运行 ava 命令。
我们可以修改一下 package.json 的 scripts
现在我们在根目录下运行
到现在,我们的 Model 已经基本建立完成了,接下来我们进入业务编写环节。
Last updated