• 【春到渭南】随手拍渭南各地区春景,一贴看尽渭南春色! 2019-04-18
  • 新能源汽车纳入蚌埠市级政府集中采购目录 2019-04-17
  • 马克思的每个人全面而自由发展,是人的最高需求层次理论。 2019-04-13
  • 习近平:在2018年春节团拜会上的讲话 2019-04-13
  • 陕煤集团多家分公司5月煤炭铁路装运量创历史新高 2019-03-25
  • 中国公民可72小时免签停留俄大城市?中俄正在协商 2019-03-21
  • 就是,适可而止,太多就太假了。[哈哈] 2019-03-21
  • 海螺集团党委组织召开今年第五次中心组学习会 2019-03-17
  • 哈洽会华南城分会场暨俄罗斯风情文化节启幕 2019-03-17
  • 什么是幸福 ——“幸福死了”与“健康长寿” 2019-03-08
  • 高级需求不是物质需求,而是精神需求。你可能理解不了,为什么方志敏们面对高官,厚禄的诱惑而其志不改。 2019-03-08
  • 让办证群众跑十几趟 宁都这黄所长“黄”了 2019-03-05
  • 毛泽东说帝国主义都是纸老虎。是有社会基础的 2019-02-25
  • Node.js ORM 框架 Sequelize 重要更新 v5?发布

    局长
     局长
    发布于 2019年03月15日
    收藏 7

    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 注入攻击。//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:[email protected]: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?');
    });

    此外,针对不同的数据库也进行了一定程度上的变更,详情请查看发布公告。

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处,尊重他人劳动共创开源社区。
    转载请注明:文章转载自 OSCHINA 社区 广东十一选五推荐号
    本文标题:Node.js ORM 框架 Sequelize 重要更新 v5?发布
    加载中

    精彩评论

    Fenying
    Fenying
    一个到处是坑,联表难用得一b的ORM。
    挪鸡鸭
    挪鸡鸭

    引用来自“全体人员”的评论

    一个到处是坑,联表难用得一b的ORM。

    引用来自“左华栋”的评论

    试试 typeorm
    typeorm坑更多,能把你的数据库搞残。

    比如在migration中执行了 table.renameColumn() 操作,这货会先把你的字段删掉,然后再创建这个字段。注意,是先删掉字段,这个字段的数据全部会没掉。提过issue,作者还觉得就tm是这种逻辑,不用修
    k
    keep_wan
    node 不适合做后端.多对多。一对多。多对一表关联。难用过的一笔
    左华栋
    左华栋
    在用 typeorm

    最新评论(10

    左华栋
    左华栋

    引用来自“首席技师”的评论

    laravel ORM 真香
    adonisjs 有类似的。
    laravel orm 成熟,但是达不到好用,类型是个大坑。
    typeorm 的目标是 java orm
    左华栋
    左华栋

    引用来自“全体人员”的评论

    一个到处是坑,联表难用得一b的ORM。

    引用来自“左华栋”的评论

    试试 typeorm

    引用来自“挪鸡鸭”的评论

    typeorm坑更多,能把你的数据库搞残。

    比如在migration中执行了 table.renameColumn() 操作,这货会先把你的字段删掉,然后再创建这个字段。注意,是先删掉字段,这个字段的数据全部会没掉。提过issue,作者还觉得就tm是这种逻辑,不用修
    类型不一定一样
    ViperWhip
    ViperWhip

    引用来自“keep_wan”的评论

    node 不适合做后端.多对多。一对多。多对一表关联。难用过的一笔
    写个view啊,这玩意好像也支持raw query。
    首席技师
    首席技师
    laravel ORM 真香
    挪鸡鸭
    挪鸡鸭

    引用来自“全体人员”的评论

    一个到处是坑,联表难用得一b的ORM。

    引用来自“左华栋”的评论

    试试 typeorm
    typeorm坑更多,能把你的数据库搞残。

    比如在migration中执行了 table.renameColumn() 操作,这货会先把你的字段删掉,然后再创建这个字段。注意,是先删掉字段,这个字段的数据全部会没掉。提过issue,作者还觉得就tm是这种逻辑,不用修
    水木易安
    水木易安
    这种API习惯不来
    k
    keep_wan
    node 不适合做后端.多对多。一对多。多对一表关联。难用过的一笔
    左华栋
    左华栋

    引用来自“全体人员”的评论

    一个到处是坑,联表难用得一b的ORM。
    试试 typeorm
    Fenying
    Fenying
    一个到处是坑,联表难用得一b的ORM。
    左华栋
    左华栋
    在用 typeorm
    返回顶部
    顶部
  • 【春到渭南】随手拍渭南各地区春景,一贴看尽渭南春色! 2019-04-18
  • 新能源汽车纳入蚌埠市级政府集中采购目录 2019-04-17
  • 马克思的每个人全面而自由发展,是人的最高需求层次理论。 2019-04-13
  • 习近平:在2018年春节团拜会上的讲话 2019-04-13
  • 陕煤集团多家分公司5月煤炭铁路装运量创历史新高 2019-03-25
  • 中国公民可72小时免签停留俄大城市?中俄正在协商 2019-03-21
  • 就是,适可而止,太多就太假了。[哈哈] 2019-03-21
  • 海螺集团党委组织召开今年第五次中心组学习会 2019-03-17
  • 哈洽会华南城分会场暨俄罗斯风情文化节启幕 2019-03-17
  • 什么是幸福 ——“幸福死了”与“健康长寿” 2019-03-08
  • 高级需求不是物质需求,而是精神需求。你可能理解不了,为什么方志敏们面对高官,厚禄的诱惑而其志不改。 2019-03-08
  • 让办证群众跑十几趟 宁都这黄所长“黄”了 2019-03-05
  • 毛泽东说帝国主义都是纸老虎。是有社会基础的 2019-02-25