본문 바로가기
  • AI (Artificial Intelligence)
Programming/JavaScript, Node.js

[sequelize] 컬럼 정의

by 로샤스 2021. 7. 6.

Ref. https://any-ting.tistory.com/50?category=454236 

두 번째 파라미터는 우리가 만들려고 하는 모델(테이블) 컬럼 속성을 정의합니다.

대표적으로 자주 사용하는 속성들에 대해 설명하겠습니다.

  • type : 데이터 타입을 정의(문자, 숫자, 날짜 등등)
  • primaryKey : 기본 키 설정(default : false) 시퀄 라이즈에서는 기본적으로 primaryKey 컬럼을 생성한다.(id라는 이름으로 생성)
  • autoIncrement : 숫자 자동 증가(default : false)
  • allowNull : NOT NULL 허용 여부(default : true)
  • unique : Unigue 조건인지 아닌지에 대한 옵션
  • comment : column에 대한 설명 작성 가능
  • validate : 데이터 유효성 검사를 하는 속성

    공식 홈페이지 나와 있는 속성은 아래와 같습니다. 
    validate: {
      is: /^[a-z]+$/i,          // matches this RegExp
      is: ["^[a-z]+$",'i'],     // same as above, but constructing the RegExp from a string
      not: /^[a-z]+$/i,         // does not match this RegExp
      not: ["^[a-z]+$",'i'],    // same as above, but constructing the RegExp from a string
      isEmail: true,            // checks for email format (foo@bar.com)
      isUrl: true,              // checks for url format (http://foo.com)
      isIP: true,               // checks for IPv4 (129.89.23.1) or IPv6 format
      isIPv4: true,             // checks for IPv4 (129.89.23.1)
      isIPv6: true,             // checks for IPv6 format
      isAlpha: true,            // will only allow letters
      isAlphanumeric: true,     // will only allow alphanumeric characters, so "_abc" will fail
      isNumeric: true,          // will only allow numbers
      isInt: true,              // checks for valid integers
      isFloat: true,            // checks for valid floating point numbers
      isDecimal: true,          // checks for any numbers
      isLowercase: true,        // checks for lowercase
      isUppercase: true,        // checks for uppercase
      notNull: true,            // won't allow null
      isNull: true,             // only allows null
      notEmpty: true,           // don't allow empty strings
      equals: 'specific value', // only allow a specific value
      contains: 'foo',          // force specific substrings
      notIn: [['foo', 'bar']],  // check the value is not one of these
      isIn: [['foo', 'bar']],   // check the value is one of these
      notContains: 'bar',       // don't allow specific substrings
      len: [2,10],              // only allow values with length between 2 and 10
      isUUID: 4,                // only allow uuids
      isDate: true,             // only allow date strings
      isAfter: "2011-11-05",    // only allow date strings after a specific date
      isBefore: "2011-11-05",   // only allow date strings before a specific date
      max: 23,                  // only allow values <= 23
      min: 23,                  // only allow values >= 23
      isCreditCard: true,       // check for valid credit card numbers

      // Examples of custom validators:
      isEven(value) {
        if (parseInt(value) % 2 !== 0) {
          throw new Error('Only even values are allowed!');
        }
      }
      isGreaterThanOtherField(value) {
        if (parseInt(value) <= parseInt(this.otherField)) {
          throw new Error('Bar must be greater than otherField.');
        }
      }
    }

'Programming > JavaScript, Node.js' 카테고리의 다른 글

Migrating from npm  (0) 2021.07.12
리덕스(Redux)를 왜 사용하는가?  (0) 2021.07.12
[Sequelize] Data type of Model in Sequelize  (1) 2021.07.06
[sequelize] DATETIME to TIMESTAMP  (1) 2021.07.06
serverless-dotenv-plugin  (0) 2021.06.30

댓글