代码拉取完成,页面将自动刷新
const Sequelize=require('sequelize');
const uuid=require('node-uuid');
const config=require('./config');
console.log('init sequelize...');
function generateId(){
return uuid.v4();
};
var sequelize=new Sequelize(config.database,config.username,config.password,{
host:config.host,
dialect:config.dialect,
pool:{
max:5,
min:0,
idle:10000
}
});
const ID_TYPE=Sequelize.STRING(50);
function defineModel(name,attributes){
var attrs={};
for(let key in attributes){
let value=attributes[key];
if(typeof value==='object'&&value['type']){
value.allowNull=value.allowNull||false;
attrs[key]=value;
}else{
attrs[key]={
type:value,
allowNull:false
};
}
}
attrs.id={
type:ID_TYPE,
primaryKey:true
};
attrs.createAt={
type:Sequelize.BIGINT,
allowNull:false
};
attrs.updateAt={
type:Sequelize.BIGINT,
allowNull:false
};
attrs.version={
type:Sequelize.BIGINT,
allowNull:false
};
return sequelize.define(name,attrs,{
tableName:name,
timestamps:false,
hooks:{
beforeValidate:obj=>{
let now=Date.now();
if(obj.isNewRecord){
if(!obj.id){
obj.id=generateId();
}
obj.createAt=now;
obj.updateAt=now;
obj.version=0;
}else{
obj.updateAt=Date.now();
obj.version++;
}
}
}
});
}
var exp={
defineModel:defineModel,
sync:()=>{
if(process.env.NODE_ENV!=='production'){
sequelize.sync({force:true});
}else{
throw new Error('Cannot sync() when NODE_ENV is set to \'production\'')
}
}
};
const TYPES=['STRING','INTEGER','BIGINT','TEXT','DOUBLE','DATEONLY','BOOLEAN'];
for(let type of TYPES){
exp[type]=Sequelize[type];
};
exp.ID=ID_TYPE;
exp.generateId=generateId;
module.exports=exp;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。