内容简介:Node.js ORM 框架 Sequelize v5 已正式发布,这也是 v4 推出一年多后的主要版本。 Sequelize 是一个基于 promise 的 Node.js ORM,目前支持 PostgreSQL, MySQL, SQLite 和 Microsoft SQL Server 数据库,它具有强...
Node.js ORM 框架 Sequelize v5 已正式发布,这也是 v4 推出一年多后的主要版本。
Sequelize 是一个基于 promise 的 Node.js ORM,目前支持 PostgreSQL, MySQL, SQLite 和 Microsoft SQL Server 数据库,它具有强大的事务支持、关联关系、读取和复制等功能。Sequelize.js 完全使用 JavaScript 编写,适用于 Node.js 环境。
下面我们不妨看看 v5 版本有哪些值得关注的更新。
首先要说明的是,这是一个重要的版本,但同时也包含了许多不兼容的变化。
重大变更
仅支持 Node v6 及更高版本
从 Sequelize v5 开始,仅支持 Node 6 及更高版本 (#9015)
安全运算符(Secure Operators)
从 v4 版本开始,用户就开始接收到关于“不推荐使用基于字符串的运算符”的弃用警告,也是从那时起就引入了运算符的概念。这些运算符用于防止 HASH 注入攻击。http://docs.sequelizejs.com/manual/querying.html#operators-security
在 v5 版本中
- 默认启用运算符功能
- 删除 Op.$raw
- 仍可通过传入 operators map 至 operatorsAliases 的方式来使用字符串运算符,但会返回弃用警告
改进对 TypeScript 的支持
这也是该版本最值得关注度的更新之一。Sequelize 现在已正式添加对 TypeScript typings 的支持 (#10287)
已被删除的别名
许多常量、对象和类中所调用的原型已被删除,具体如下 (#9372):
| Removed in v5 | Official Alternative |
|---|---|
| Sequelize.prototype.Utils | Sequelize.Utils |
| Sequelize.prototype.Promise | Sequelize.Promise |
| Sequelize.prototype.TableHints | Sequelize.TableHints |
| Sequelize.prototype.Op | Sequelize.Op |
| Sequelize.prototype.Transaction | Sequelize.Transaction |
| Sequelize.prototype.Model | Sequelize.Model |
| Sequelize.prototype.Deferrable | Sequelize.Deferrable |
| Sequelize.prototype.Error | Sequelize.Error |
| Sequelize.prototype[error] | Sequelize[error] |
import Sequelize from 'sequelize';
const sequelize = new Sequelize('postgres://user:password@127.0.0.1:mydb');
/**
* In v4 you can do this
*/
console.log(sequelize.Op === Sequelize.Op) // logs `true`
console.log(sequelize.UniqueConstraintError === Sequelize.UniqueConstraintError) // logs `true`
Model.findAll({
where: {
[sequelize.Op.and]: [ // Using sequelize.Op or Sequelize.Op interchangeably
{
name: "Abc"
},
{
age: {
[Sequelize.Op.gte]: 18
}
}
]
}
}).catch(sequelize.ConnectionError, () => {
console.error('Something wrong with connection?');
});
/**
* In v5 aliases has been removed from Sequelize prototype
* You should use Sequelize directly to access Op, Errors etc
*/
Model.findAll({
where: {
[Sequelize.Op.and]: [ // Dont use sequelize.Op, use Sequelize.Op instead
{
name: "Abc"
},
{
age: {
[Sequelize.Op.gte]: 18
}
}
]
}
}).catch(Sequelize.ConnectionError, () => {
console.error('Something wrong with connection?');
});
此外,针对不同的数据库也进行了一定程度上的变更,详情请查看发布公告。
以上所述就是小编给大家介绍的《Node.js ORM 框架 Sequelize 重要更新 v5 发布》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
细节决定交互设计的成败
张亮 / 2009-3 / 49.00元
《细节决定交互设计的成败》是一本非常实用的有关软件界面的交互设计和可用性设计方面知识的书籍,通过采用一问一答的形式,你将会有针对性地学习到一些能够很快应用在自己软件开发工作中的细节知识和诀窍。例如,如何减轻用户的等待感,如何预防和减少用户的使用错误等。另外,你会发现阅读《细节决定交互设计的成败》时会非常轻松和愉悦;这是由于《细节决定交互设计的成败》写作上的两个特点:第一,采用较多日常生活中的例子来......一起来看看 《细节决定交互设计的成败》 这本书的介绍吧!
Markdown 在线编辑器
Markdown 在线编辑器
HSV CMYK 转换工具
HSV CMYK互换工具