NODEJS sequelizeにおける唯一の索引の実現

1689 ワード

長い間APIの文書を調べてみて、よく見てやっとこのような一つが見つかりました.
[atributes.com lumn.unique=false]
Stering Boolean
If true,the column will get a unique constration.If a string is provided,the column will be part of a compsite unique index.If multile columns have the same string,they will be part of the Same unqueindex
uniqueという属性は文字列でもbook型でもいいです.
book型の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;
};
この例では、araIdは同時に外キーであり、ara表に関連して、このように書くことができます.
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;
};