'use strict';
const crypto = require('crypto');
module.exports = (sequelize, DataTypes) => {
const urls = sequelize.define(
'urls',
{
url: DataTypes.STRING,
baseUrl: DataTypes.STRING,
code: DataTypes.STRING,
title: DataTypes.STRING,
visits: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
},
userId: DataTypes.INTEGER,
},
{
hooks: {
afterValidate: (data, options) => {
var shasum = crypto.createHash('sha1'); // 알고리즘 방식
shasum.update(data.url); // 알고리즘으로 값 변환 => data.url: 해싱할 값
data.code = 'D' + shasum.digest('hex').slice(0, 5); // 변환 값을 입력 받은 방식으로 인코딩
},
},
}
);
urls.associate = function (models) {};
return urls;
};
위의 코드에서 hooks
가 하는 역할이 무엇인지 궁금하여 알아보았다.
Hooks는 Sequelize가 실행되기 전후에 호출되는 함수이다. afterValidate
는 항상 모델에 저장한 후에 값을 설정하고 싶을때, beforeValidate
는 항상 모델에 저장하기 전에 값을 설정하고 싶을때 사용하면 된다.