Sequelize 是一个支持多种数据库的 ORM(Object-Relational Mapping)库,用于在 Node.js 中方便地进行数据库操作。在 Sequelize 中,模型是操作数据库的核心概念,可以实现对数据库的 CRUD(创建、读取、更新、删除)操作。本文将介绍 Sequelize 模型的增删改查操作,包括详细的说明和示例代码,希望对前端开发者有所帮助。
准备工作
在进行 Sequelize 的模型操作之前,需要先安装相关的库和数据库,包括 Sequelize、mysql2 或者其他支持的数据库。可以使用 npm 来安装:
npm install sequelize mysql2
此外,还需要创建一个数据库和相关的表。下面是一个示例的 SQL 语句,创建名为 blog 的数据库和 article 表:
-- -------------------- ---- ------- ------ -------- ----- --- ----- ------ ----- ------- - -- --- --- ---- -------------- ------- ---- ----- ------------ --- ----- ------- ---- --- ----- --------- -------- --- ---- ------- ------------------ --------- -------- --- ---- ------- ----------------- --
定义模型
在操作数据库之前,需要先定义一个模型,用于描述表的结构和数据类型。下面是一个简单的示例,定义了一个名为 Article 的模型,对应上面创建的 article 表:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - --- ----------------- ------- ----------- - ----- ------------ -------- -------- --- ----- ------- - --------------------------- - ------ ----------------- -------- -------------- --- -------------- - --------
具体的,需要先引入 Sequelize 库,并创建一个 Sequelize 实例。然后,使用 define 方法定义一个名为 Article 的模型,其中,title 和 content 分别对应 article 表中的 title 和 content 字段,类型分别为 STRING 和 TEXT。最后,将模型导出以供其他模块使用。
增加数据
使用 Sequelize 增加数据非常方便,仅需要调用模型的 create 方法即可。下面是一个示例,创建一篇新的文章:
const Article = require('./models/article'); Article.create({ title: 'My first article', content: 'This is my first article created using Sequelize.' }).then(article => { console.log(article.toJSON()); }).catch(err => console.error(err));
具体的,首先需要引入之前定义的 Article 模型,然后调用 create 方法创建一篇新的文章,传入一个对象作为参数,对象中的键值对对应 Article 模型中的字段和值。此时,如果创建成功,create 方法返回一个 Promise,Promise 的 resolve 值为刚刚创建的文章对象。通过调用 toJSON 方法,可以将该对象转换为 JSON 格式并输出到控制台,以便查看。
查询数据
Sequelize 提供了多种方式进行查询操作,本文介绍其中的两种:findAll 和 findByPk。findAll 方法用于查询所有符合条件的数据;findByPk 方法则用于根据主键查询单个数据。
查询所有数据
使用 findAll 方法可以查询所有符合条件的数据,返回值为一个包含数据对象的数组。下面是一个示例,查询所有的文章:
const Article = require('./models/article'); Article.findAll().then(articles => { articles.forEach(article => console.log(article.toJSON())); }).catch(err => console.error(err));
具体的,首先需要引入之前定义的 Article 模型,然后调用 findAll 方法查询所有的文章。findAll 方法可以传入一个对象作为参数,用于指定查询条件和选项。由于本示例没有指定任何条件和选项,因此返回所有符合条件的数据。findAll 方法返回一个 Promise,Promise 的 resolve 值为一个包含所有文章对象的数组。通过 forEach 方法遍历该数组,并调用 toJSON 方法输出每个对象的 JSON 格式。
根据主键查询数据
使用 findByPk 方法可以根据主键查询单个数据,返回值为一个数据对象。下面是一个示例,根据 id 查询一篇文章:
const Article = require('./models/article'); Article.findByPk(1).then(article => { console.log(article.toJSON()); }).catch(err => console.error(err));
具体的,首先需要引入之前定义的 Article 模型,然后调用 findByPk 方法并传入主键的值作为参数,查询对应的文章。findByPk 方法返回一个 Promise,Promise 的 resolve 值为查询到的文章对象。通过调用 toJSON 方法,可以将该对象转换为 JSON 格式并输出到控制台,以便查看。
修改数据
使用 Sequelize 修改数据也非常方便,仅需要先查询数据,然后修改对应的属性值并调用 save 方法即可。下面是一个示例,在查询到一篇文章后将其标题修改为新标题:
const Article = require('./models/article'); Article.findByPk(1).then(article => { article.title = 'New title'; return article.save(); }).then(article => console.log(article.toJSON())) .catch(err => console.error(err));
具体的,首先需要引入之前定义的 Article 模型,然后调用 findByPk 方法查询一篇文章。findByPk 方法返回一个 Promise,Promise 的 resolve 值为查询到的文章对象。接着,将文章对象的 title 属性修改为新的标题,并调用 save 方法保存修改。save 方法也返回一个 Promise,Promise 的 resolve 值为修改后的文章对象。通过调用 toJSON 方法,可以将该对象转换为 JSON 格式并输出到控制台,以便查看。
删除数据
使用 Sequelize 删除数据也非常方便,仅需要先查询数据,然后调用 destroy 方法即可。下面是一个示例,删除一篇文章:
const Article = require('./models/article'); Article.findByPk(1).then(article => { return article.destroy(); }).then(() => console.log('Article deleted.')) .catch(err => console.error(err));
具体的,首先需要引入之前定义的 Article 模型,然后调用 findByPk 方法查询一篇文章。findByPk 方法返回一个 Promise,Promise 的 resolve 值为查询到的文章对象。接着,调用 destroy 方法删除该文章,并返回一个 Promise,Promise 的 resolve 值为 undefined。通过链式调用 then 方法,输出删除成功的消息。如果发生错误,可以通过调用 catch 方法捕获并输出错误信息。
总结
本文介绍了 Sequelize 模型的增删改查操作,包括定义模型、增加数据、查询数据、修改数据和删除数据。通过本文的说明和示例代码,读者可以理解 Sequelize 与模型之间的关系,掌握使用 Sequelize 进行数据库操作的基本方法,并在实际开发中应用。同时,本文也提供了一些实用的指导意义,如何设置 Sequelize 实例、如何指定查询条件和选项、如何遍历查询结果等。希望对前端开发者有所启发和帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a4d04648841e9894134560