Sequelize 是 Node.js 环境下一款非常优秀的 ORM 框架,是我们在 Node.js 开发中使用最多的数据库框架之一。Sequelize 支持 PostgreSQL、MySQL、SQLite 和 MSSQL 数据库,可以极大地方便我们进行数据库相关操作。
在 Sequelize 中,我们使用 Model 来管理数据库表,它提供了一系列实例方法和类方法方便我们进行操作。本文将介绍 Sequelize 中的 Model 实例方法与类方法,希望能够对大家有所帮助。
Model 实例方法
create(values, options)
该方法用于在数据库表中创建一条记录。
参数说明:
values
: 一个对象,包含需要插入到数据库表中的数据。options
: 一个可选参数,包含一些辅助信息,例如:事务、hooks 等。
示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - -- --- --- ------------- ---------- ------- --------- ------ ---- -- ------------ -- - ------------------ ---
update(values, options)
该方法用于更新数据库表中的一条或多条记录。
参数说明:
values
: 一个对象,包含需要更新的数据。options
: 一个可选参数,包含一些辅助信息,例如:过滤、事务、hooks 等。
示例代码:
User.update({ firstName: 'Jane' }, { where: { lastName: 'Doe' }}) .then(rows => { console.log(rows); });
destroy(options)
该方法用于删除数据库表中的一条或多条记录。
参数说明:
options
: 一个可选参数,包含一些辅助信息,例如:过滤、事务、hooks 等。
示例代码:
User.destroy({ where: { lastName: 'Doe' }}) .then(() => { console.log('Deleted'); });
save(options)
该方法用于将一个 Model 实例保存到数据库表中。
参数说明:
options
: 一个可选参数,包含一些辅助信息,例如:事务、hooks 等。
示例代码:
-- -------------------- ---- ------- ----- ---- - ------------ ---------- ------- --------- ------ ---- -- --- ------------------- -- - ------------------ ---
Model 类(class)方法
findOne(options)
该方法用于查找数据库表中的一条记录。
参数说明:
options
: 一个可选参数,包含一些辅助信息,例如:过滤、排序、包含关联表等。
示例代码:
User.findOne({ where: { lastName: 'Doe' } }) .then(user => { console.log(user); });
findAll(options)
该方法用于查找数据库表中的多条记录。
参数说明:
options
: 一个可选参数,包含一些辅助信息,例如:过滤、排序、包含关联表等。
示例代码:
User.findAll({ where: { age: { [Op.gt]: 18 }}}) .then(users => { console.log(users); });
bulkCreate([{}], options)
该方法用于在数据库表中批量创建多条记录。
参数说明:
values
: 一个数组,数组中的每个对象表示需要插入到数据库表中的数据。options
: 一个可选参数,包含一些辅助信息,例如:事务、hooks 等。
示例代码:
User.bulkCreate([ { firstName: 'John', lastName: 'Doe', age: 20 }, { firstName: 'Jane', lastName: 'Doe', age: 18 } ]).then(() => { console.log('Created'); });
总结
Sequelize 中 Model 实例方法和类方法提供了非常便捷的方式来处理与数据库表的交互。在实际的项目中,我们使用它们可以避免写很多重复的 SQL 代码,提高开发效率。本文介绍的只是其中的一部分方法,更多方法可以查看 Sequelize 官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645b586e968c7c53b0db09e8