NODEJS sequelize中联合唯一索引的实现

查了半天API文档,仔细看才发现这么一条

[attributes.column.unique=false] String | Boolean If true, the column will get a unique constraint. If a string is provided, the column will be part of a composite unique index. If multiple columns have the same string, they will be part of the same unique index
意思是unique这个属性可以为字符串也可以为bool型

假如为bool型的true,则表示单个这个列建唯一索引

假如为字符串,别的列中使用相同字符串的跟这个组成联合唯一索引,所以就实现了

"use strict";

module.exports = function (sequelize, DataTypes) {
    var Store = sequelize.define("Store", {
        storeId:{type:DataTypes.INTEGER, primaryKey: true,  autoIncrement: true},
        name: {type:DataTypes.STRING, unique:"uk_t_store"},
        address: DataTypes.STRING,
        status: {type: DataTypes.INTEGER, defaultValue: 1},
        areaId: {type:DataTypes.UUID,allowNull: false, unique:"uk_t_store"}
    }, {
        tableName: 't_store'
    });
    return Store;
};

本例中,areaId同时又是外键,关联一张area表,可以这么写

db['Store'].belongsTo(db['Area'], {foreignKey: "areaId", constraints: false});

同时附上另一张表的表结构

"use strict";

module.exports = function (sequelize, DataTypes) {
    var Area = sequelize.define("Area", {
        //区域ID
        areaId: {type: DataTypes.UUID, primaryKey: true, allowNull: false, defaultValue: DataTypes.UUIDV4},
        //区域名
        name: {type:DataTypes.STRING, unique:"uk_t_area"},
        //区域状态  1-启用 0-禁用
        status: {type: DataTypes.INTEGER, defaultValue: 1}

    }, {
        tableName: 't_area'
    });
    return Area;
};


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Node.js是一个基于Chrome V8 JavaScript引擎的JavaScript运行环境,可以在服务器端运行JavaScript。Sequelize是一个流行的ORM框架,它提供了对多种数据库的支持,包括MySQL。MySQL是一种流行的关系型数据库管理系统。使用Sequelize和MySQL可以轻松地在Node.js处理数据库操作。 具体来说,Sequelize是一个使用Promise实现的Node.js ORM,支持多种数据库,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。通过Sequelize,我们可以轻松地定义模型、查询数据和执行事务等操作。 在使用Sequelize时,需要先安装sequelize和mysql2这两个npm包。接下来,我们需要定义一个sequelize实例,并指定数据库连接信息,如下所示: ``` const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); ``` 其,`database`、`username`和`password`分别是数据库的名称、用户名和密码,`localhost`是数据库所在的主机地址,`mysql`表示使用MySQL数据库。 接下来,我们可以定义一个模型,如下所示: ``` const User = sequelize.define('user', { firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING } }); ``` 这个模型表示一个名为User的表,包含两个字段:firstName和lastName。其,firstName是必填字段,而lastName是可选字段。 定义完模型后,我们就可以使用它来查询数据了。例如,查询所有用户的firstName和lastName字段,可以使用如下代码: ``` User.findAll({ attributes: ['firstName', 'lastName'] }).then(users => { console.log(users); }); ``` 这个代码会查询所有用户的firstName和lastName字段,并将结果输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值