Sequelize.js 是一个基于 Node.js 的 ORM(Object-Relational Mapping),用于将对象与关系数据库之间的映射,使代码可以更直观地操作数据库,而不需要写出与数据库语言相似的 SQL 语句。它支持多种主流数据库,如 MySQL、PostgreSQL、SQLite 等等,并提供许多强大的功能和 API 接口。
安装和使用
要使用 Sequelize.js,你需要首先安装它。你可以使用 npm 安装它:
npm install sequelize
然后,你可以引入 Sequelize.js 模块并创建一个 Sequelize
实例:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost' });
其中,database
是你的数据库名称,username
和 password
是你的登录凭证。这里我们使用 MySQL 作为示例数据库,你还可以将 dialect
设置为其他数据库类型,如 postgres
或 sqlite
。
接着,你可以定义一个模型,用于映射数据库表。模型类似于对象,包含了一些属性和方法,可以方便地对数据库表进行操作。例如:
-- -------------------- ---- ------- ----- - ------ --------- - - ---------- ----- ---- ------- ----- -- ----------- ---------- - ----- ----------------- ---------- ----- -- --------- - ----- ---------------- - -- - ---------- ---------- ------ ---
上面的代码定义了一个名为 user
的模型,它有一个 firstName
属性和一个可选的 lastName
属性。DataTypes.STRING
表示该属性类型为字符串,allowNull
表示不允许为空。然后,我们使用 User.init()
方法来告诉 Sequelize 使用我们的模型定义。
查询和更新
一旦你定义了模型,你就可以使用 Sequelize 提供的各种方法来操作模型和数据库。例如,要查询数据库中的记录,你可以使用 find
方法:
const user = await User.findOne();
这将返回一个 Promise,完成后将返回一个 user
对象,其中包含数据库中第一条记录的数据。你还可以使用 findAll()
方法来查找多条记录。
要更新数据库中的记录,你可以使用 update
方法:
const count = await User.update({ firstName: '新的名字' }, { where: { firstName: '旧的名字' } });
这将更新所有名字为 旧的名字
的记录的 firstName
属性为 新的名字
。update
方法返回一个 Promise,完成后将返回更新的记录数。
关联和约束
除了查询和更新数据,Sequelize 还支持许多高级功能,如关联和约束。关联用于建立数据库表之间的联系,例如一个用户有多个订单,订单可以属于多个用户。在 Sequelize 中,你可以在模型定义中使用 hasMany
或 belongsTo
方法来定义关联关系。例如:
-- -------------------- ---- ------- ----- ---- ------- ----- - ------ ----------------- - --------------------------- - - ----- ----- ------- ----- - ------ ----------------- - ---------------------------- - -
在上面的代码中,我们定义了一个 User
模型和一个 Order
模型,它们之间存在 1:n 的关联关系。User
模型使用了 hasMany
方法,表示一个用户可以有多个订单;Order
模型使用 belongsTo
方法,表示一个订单必须属于某个用户。
另外,我们还可以使用约束来限制数据库表中数据的合法性。例如,你可以定义一个模型并添加一些字段验证器:
-- -------------------- ---- ------- ----- ---- ------- ----- -- ----------- ------ - ----- ----------------- ---------- ------ --------- - -------- - ---- -------- -- ---- - ----- --- ---- ---- -------- ---- ------ - - -- ----- - ----- --------------- ---------- ---- - -- - ---------- ---------- ------ ---
上面的代码定义了一个名为 task
的模型,它有一个 title
属性和一个可选的 desc
属性。title
属性不能为空,且长度必须在 3-32 个字符之间,否则将返回对应的错误消息。
总结
Sequelize.js 是一个非常有用和强大的 ORM,它可以大大简化前端开发过程中与数据库相关的任务。通过本文,你已经了解了如何安装和使用 Sequelize.js,以及如何定义模型、查询和更新数据、定义关联和约束等常用的功能和 API 接口。希望这篇文章对你有所帮助,可以让你更轻松地开发出高质量的前端应用程序!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6489143548841e98947602a3