资讯专栏INFORMATION COLUMN

sequelize入门

kidsamong / 3055人阅读

摘要:最近在公司接触到了的框架,研究了一下官方文档,做了以下整理其他定义方法字段类型是否允许为字段是否自定义表名是否需要增加字段不需要字段将字段改个名将字段改名同时需要设置为此种模式下,删除数据时不会进行物理删除,而是设置为当前时间

最近在公司接触到了sequelize(Nodejs的ORM框架),研究了一下官方文档,做了以下整理

Models Definition
let DeviceInterface = Sequelize.define("DeviceInterface", {
        name: {
            type: Sequelize.STRING,
            allowNull: false
        },
        createBy: {
            type: Sequelize.INTEGER,
            defaultValue: "-1"
        },
        image: {
            type: Sequelize.STRING
        },
        desc: {
            type: Sequelize.STRING
        }
    }, {
        tableName: "DeviceInterface"
    });
Data types
Sequelize.STRING                      // VARCHAR(255)
Sequelize.STRING(1234)                // VARCHAR(1234)
Sequelize.STRING.BINARY               // VARCHAR BINARY
Sequelize.TEXT                        // TEXT
Sequelize.TEXT("tiny")                // TINYTEXT

Sequelize.INTEGER                     // INTEGER
Sequelize.BIGINT                      // BIGINT
Sequelize.BIGINT(11)                  // BIGINT(11)

Sequelize.FLOAT                       // FLOAT
Sequelize.FLOAT(11)                   // FLOAT(11)
Sequelize.FLOAT(11, 12)               // FLOAT(11,12)

Sequelize.REAL                        // REAL        PostgreSQL only.
Sequelize.REAL(11)                    // REAL(11)    PostgreSQL only.
Sequelize.REAL(11, 12)                // REAL(11,12) PostgreSQL only.

Sequelize.DOUBLE                      // DOUBLE
Sequelize.DOUBLE(11)                  // DOUBLE(11)
Sequelize.DOUBLE(11, 12)              // DOUBLE(11,12)

Sequelize.DECIMAL                     // DECIMAL
Sequelize.DECIMAL(10, 2)              // DECIMAL(10,2)

Sequelize.DATE                        // DATETIME for mysql / sqlite, TIMESTAMP WITH TIME ZONE for postgres
Sequelize.DATE(6)                     // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision 
Sequelize.DATEONLY                    // DATE without time.
Sequelize.BOOLEAN                     // TINYINT(1)

Sequelize.ENUM("value 1", "value 2")  // An ENUM with allowed values "value 1" and "value 2"
Sequelize.ARRAY(Sequelize.TEXT)       // Defines an array. PostgreSQL only.

Sequelize.JSON                        // JSON column. PostgreSQL only.
Sequelize.JSONB                       // JSONB column. PostgreSQL only.

Sequelize.BLOB                        // BLOB (bytea for PostgreSQL)
Sequelize.BLOB("tiny")                // TINYBLOB (bytea for PostgreSQL. Other options are medium and long)

Sequelize.UUID                        // UUID datatype for PostgreSQL and SQLite, CHAR(36) BINARY for MySQL (use defaultValue: Sequelize.UUIDV1 or Sequelize.UUIDV4 to make sequelize generate the ids automatically)

Sequelize.RANGE(Sequelize.INTEGER)    // Defines int4range range. PostgreSQL only.
Sequelize.RANGE(Sequelize.BIGINT)     // Defined int8range range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATE)       // Defines tstzrange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATEONLY)   // Defines daterange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DECIMAL)    // Defines numrange range. PostgreSQL only.

Sequelize.ARRAY(Sequelize.RANGE(Sequelize.DATE)) // Defines array of tstzrange ranges. PostgreSQL only.

Sequelize.GEOMETRY                    // Spatial column.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY("POINT")           // Spatial column with geometry type.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY("POINT", 4326)     // Spatial column with geometry type and SRID.  PostgreSQL (with PostGIS) or MySQL only.
其他定义方法
var User = sequelize.define(
    "user",
    {
        "emp_id": {
            "type": Sequelize.CHAR(10), // 字段类型
            "allowNull": false,         // 是否允许为NULL
            "unique": true              // 字段是否UNIQUE
        },
        "nick": {
            "type": Sequelize.CHAR(10),
            "allowNull": false
        },
        "department": {
            "type": Sequelize.STRING(64),
            "allowNull": true
        }
    },
    {
        // 自定义表名
        "freezeTableName": true,
        "tableName": "xyz_users",

        // 是否需要增加createdAt、updatedAt、deletedAt字段
        "timestamps": true,

        // 不需要createdAt字段
        "createdAt": false,

        // 将updatedAt字段改个名
        "updatedAt": "utime"

        // 将deletedAt字段改名
        // 同时需要设置paranoid为true(此种模式下,删除数据时不会进行物理删除,而是设置deletedAt为当前时间
        "deletedAt": "dtime",
        "paranoid": true
    }
);
CRUD

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91325.html

相关文章

  • learning sequelize

    摘要:入门在使用来关系型操作数据库时,为了方便,通常都会选择一个合适的框架。类似这样加,会先删掉表后再建表。通过模型的类方法可以获取模型对象比如等。增加小明技术部修改小白白更新成功删除删除成功查询 sequelize入门 在使用NodeJS来关系型操作数据库时,为了方便,通常都会选择一个合适的ORM(Object Relationship Model)框架。毕竟直接操作SQL比较繁琐,通过O...

    Lionad-Morotar 评论0 收藏0
  • hapi 起步

    摘要:最近一直在学习,有点的基础以为会容易呢,但是全英文的,不同于的实现方式,看起来大写的懵啊,整理此文,希望能够帮助到一些想要入门的新人。,项目启动成功。若要在路径中命名参数,只需用将其包装。 最近一直在学习hapiJs,有点koa2的基础以为会容易呢,但是全英文的API,不同于koa2的实现方式,看起来大写的懵啊,整理此文,希望能够帮助到一些想要入门hapi的新人。 1、搭建项目 1.1...

    dendoink 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Jeffrrey 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    sf190404 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Airmusic 评论0 收藏0

发表评论

0条评论

kidsamong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<