仿租号网站源码网站开发,wordpress 简单,硬件开发设计流程,网站开发大全一、什么是ORM
ORM是在数据库和编程语言之间建立一种映射关系#xff0c;这样可以让我们有非常简单的代码#xff0c;来实现各种数据库的操作。
例如#xff1a;使用mysql去查找表#xff08;表名称为Articles#xff09;
SELECT * FROM Articles;但是我们使用ORM的话这样可以让我们有非常简单的代码来实现各种数据库的操作。
例如使用mysql去查找表表名称为Articles
SELECT * FROM Articles;但是我们使用ORM的话就有更便捷的方法去查找表
Article.all()Article表示先找到Article这个模型。注意下这里Article是单数形式这并不是我写错了而是 ORM 的就这么规定的。模型名是单数对应的表名是复数。这样子它就会自动找到Articles表上。all()就是查询所有的数据了。整行的意思就是查询Articles表的所有数据。
同样的如果我想查询id2的这条记录也不用写
SELECT * FROM Articles WHERE id2;而会改为
Article.findByPk(2)这里的findByPk里面的Pk就是primary key也就是主键的缩写。我们表里id就是主键说白了就是通过id来查找数据。
大家看这样使用ORM来操作数据库后明显要比写SQL简单的太多了再也不用背那么多可恶的SQL语句了。但这也不是说用了ORM以后就一点也不用懂SQL语句了。ORM它只是把我们写的代码自动转换成SQL了再运行在底层实际上一样跑的还是SQL语句。
而且当我们开发中碰到问题了要调试错误依然要看命令行里面运行的SQL语句。所以就算开发中不写SQL也一定要能看懂是什么意思。
二、配置Sequelize ORM
1.在命令行中全局安装
npm i -g sequelize-cli2.接着确保命令行是在当前项目的命令行里还要安装当前项目所依赖的sequelize包和对数据库支持依赖的mysql2
npm i sequelize mysql23.初始化项目
sequelize init三、配置完成后的目录结构 config是配置的意思这里放的也就是sequelize所需要的连接数据库的配置文件。migrations是迁移的意思如果你需要对数据库做新增表、修改字段、删除表等等操作就需要在这里添加迁移文件了。而不是像以前那样使用客户端软件来直接操作数据库。models这里面存放的是模型文件当我们使用sequelize来执行增删改查时就需要用这里的模型文件了。每个模型都对应数据库中的一张表。seeders是存放的种子文件。一般会将一些需要添加到数据表的测试数据存在这里。只需要运行一个命令数据表中就会自动填充进一些用来测试内容的了。
四、配置config.js
{development: {username: root,password: yourpassword,database: yourmysql,host: 127.0.0.1,dialect: mysql,timezone: 08:00},test: {username: root,password: null,database: yourtestmysql,host: 127.0.0.1,dialect: mysql,timezone: 08:00},production: {username: root,password: null,database: yourproductionmysql,host: 127.0.0.1,dialect: mysql,timezone: 08:00}
}第一个要改的就是密码修改成docker配置里我们设定的密码。接着要改的是数据库的名字改为clwy_api_development。
最下面还要加上时区的配置因为我们中国是在8区。这样在查询的时候时间才不会出错。
那么同样的也简单的给test和production也调整一下。
五、使用ORM创建一个表
sequelize model:generate --name Article --attributes title:string,content:text打开models/article.js。可以看到在模型文件夹中出现了一个叫做Article的模型它里面有标题和内容。
标题是字符串类型对应到 MySQL 数据库里它就会自动变成varchar。内容部分则是text类型。
现在就只需要知道模型就是用来操作数据库的就是因为有这个文件的存在我们后面才能使用Article.all()
六、迁移文件和运行迁移
1、迁移文件
看看migrations文件夹里面出现了一个由当前时间加上create-article命名的文件这个文件就是迁移文件了。它的作用就是用来创建、修改表的。看到这里在up部分。我们通过createTabel创建了一个叫做Articles的表。 接着往下看这些就是定义了Articles这张表里面所拥有的字段了比方说id、title、content这些外还出现了两个时间字段createdAt和updatedAt。
这两个字段当在新增或修改数据的时候sequelize会自动的帮我们填写的。
2、运行迁移
sequelize db:migrate打开数据库客户端刷新一下可以看到Articles表又神奇的出现了。看一看结构选项卡里面的字段和我们当时自己手动创建的完全一样而且还多了两个时间字段。这就是迁移文件的作用了。
另外一张表SequelizeMeta是我们运行迁移命令时自动生成的。这张表里记录了当前已经跑过了哪些迁移这样当你再次运行sequelize db:migrate时已经运行过的迁移文件就不会重复再次执行了。
七、种子文件
现在表也有了下一步就是要填充一些在开发中用来测试的数据了。当然你可以用手动往里面一点点填但很多情况我们做测试可能需要非常多的数据。例如我希望数据库里有 100 篇文章这时候我们一条条的录入也太笨了点。最简单的方法就是使用种子文件了。再来试试这条命令
sequelize seed:generate --name article完成后在seeds目录就看到刚才命令新建的种子文件了。同样也是分为两个部分up部分用来填充数据down部分是反向操作用来删除数据的。
先来看up部分默认生成的代码里给了我们一个案例。很明显它这里是往People表里插入了一点儿数据。
await queryInterface.bulkInsert(People, [{name: John Doe,isBetaMember: false
}], {});我们可以参考它的写法改为往Articles表里插入数据。
async up (queryInterface, Sequelize) {const articles [];const counts 100;for (let i 1; i counts; i) {const article {title: 文章的标题 ${i},content: 文章的内容 ${i},createdAt: new Date(),updatedAt: new Date(),};articles.push(article);}await queryInterface.bulkInsert(Articles, articles, {});
},运行种子
sequelize db:seed --seed xxx-article后边的文件名字每个人的创建时间都不同文件名字也不同详细看seeders下生成的文件名 八、总结