三 Koa2项目中使用ORM框架

Koa2项目中使用ORM框架

一 什么是ORM?二 Sequelize三 Sequelize准备工作四 Sequelize创建数据库,数据表,测试数据五 创建测试数据,种子文件总结

一 什么是ORM?

1.ORM是对象关系映射,ORM框架即对象关系映射框架,使用ORM可以免去我们写SQL语句的烦恼,可以直接通过操作模型对象进行增删改查,让开发人员更加注重于业务的实现,告别SQL语句。总之优点多多,大家自行百度。 2.以下操作均在Koa2项目的根目录终端下进行操作

二 Sequelize

1.Node.js中的ORM框架,首当其冲的便是Sequelize, 这是npmjs上的地址Sequelize。 2.官方网站是英文的,不过幸亏有中文网,大家可自行阅读Sequelize中文网

三 Sequelize准备工作

1.进入之前的测试项目,安装Sequelize,Mysql,及Sequelize工具

npm i sequelize -S //安装Sequelize

npm i mysql2 -S //安装mysql2

npm i sequelize-cli -g //sequelize-cli 注意Sequelize-cli是全局安装

2.全部安装完成之后,使用Sequelize-cli初始化项目

sequelize init

运行该命令时如果抛出以下错误: 这是因为powershell并非管理员身份运行,使用一下命令修改策略组,再次运行即可

set-ExecutionPolicy RemoteSigned

sequelize init

出现一下内容,则说明Sequelize初始化项目成功,这是我们可以看到项目文件夹中多了几个文件。

其中,config文件夹以及文件夹里的config.js用于配置数据库的相关信息, migrations,存储的是迁移文件,用于数据库及数据库表的更新,注意,这里更新的是数据库,而不是数据。 models,存储模型文件。 seeders,存储种子文件,用于向数据库表添加测试数据。

四 Sequelize创建数据库,数据表,测试数据

1.想要操作数据库,首先得配置数据库,首先在config文件夹中的config.js配置数据库相关连接内容,默认内容如下。 development为开发环境, test为测试环境 production为生产环境 我们在开发环境的节点中配置我们的数据库。

"development": {

"username": "root", //用户名

"password": "123456", //用户密码

"database": "koa2test", //数据库

"host": "127.0.0.1", //数据库地址

"dialect": "mysql" //数据库类型,这里的数据库支持多种数据库,我们使用mysql

}

这里的koa2test数据可以不是已经存在的数据库,我们可以使用Sequelize命令去创建它。

sequelize db:create --charset 'utf8' //charset 后边可以设置数据库的字符集格式

执行完成之后,可以看到数据库已经被创建,打开数据库管理工具,例如Navicat Premium,可以看到名为koa2test的数据库数据库已经存在,且字符集也是我们设置的utf8

如果发生错误,请检查项目配置环境或电脑自身的mysql环境是否正常。

2.创建数据库表,模型以及迁移文件 我们先来创建一个SystemManager 的数据表,默认添加一个string类型的字段,account

sequelize model:generate --name system_manager --attributes account:string

这时,Sequelize会自动创建一个迁移文件,和一个model文件。 打开迁移文件,可以看到迁移文件中已经默认为我们添加了id,createAt,updateAt这三个字段,我们手动编写的account字段也在其中。在这个文件中,我们可以根据自动生成的代码去修改迁移文件,毕竟,在命令行中编写完全部字段还是很麻烦的。 现在来运行迁移文件

sequelize db:migrate

打开数据库,可以看到表和字段都已经被创建 注意:这里的模型和数据表的区别,创建表时会自动为表名加上s,即模型为system_manager,数据库的表名为system_managers

五 创建测试数据,种子文件

sequelize seed:generate --name system_manager //创建一个名为system_manager 的种子文件

运行完成之后,可以在seeders文件夹中看到多了一个文件,且内容如下 根据给出的示例,添加两条数据 全部代码如下,注意区别修改过的地方,尤其注意对模型名称的修改,注意这里要使用数据表的名字system_managers,而不是模型名称。

'use strict';

module.exports = {

up: async (queryInterface, Sequelize) => {

/**

* Add seed commands here.

*

* Example:

* await queryInterface.bulkInsert('People', [{

* name: 'John Doe',

* isBetaMember: false

* }], {});

*/

await queryInterface.bulkInsert('system_managers', [{

account: 'admin',

password: '123456',

name: "shawn",

phone: "18800000000",

age: 28,

role: "超级管理员",

createdAt: new Date(),

updatedAt: new Date()

},

{

account: 'test',

password: '123456',

name: "tony",

phone: "18800000001",

age: 23,

role: "系统测试员",

createdAt: new Date(),

updatedAt: new Date()

}], {});

},

down: async (queryInterface, Sequelize) => {

/**

* Add commands to revert seed here.

*

* Example:

* await queryInterface.bulkDelete('People', null, {});

*/

await queryInterface.bulkDelete('system_managers', null, {});

}

};

完成之后,运行种子文件

sequelize db:seed:all

如果要单独运行指定的种子文件,则使用一下命令

sequelize db:seed --seed file_name //file_name是种子文件的名称

运行完成以后,查看数据表,可以看到,我们的测试数据已经添加到数据库中去了。

至此,我们已经使用Sequelize完成了创建数据库,数据表,模型,种子数字的操作,整个操作流程步骤如下: 后面的内容将开始讨论如何通过Sequelize对数据库进行增删改查操作。

总结

文章仅仅讲述了Sequelize的基本用法,其他更多用法,请参考官方网站。