sequelize-init.js
3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
* Sequelize初始化
*/
"use strict";
global.sequelize = global.sequelize = function () {
const Sequelize = require('sequelize'),
path = require('path'),
logger = require('./log4js-init').system;
const config = require('./config'), config_sequelize = config.sequelize;
//custom method defined here
config_sequelize.options.define = {
classMethods: {
/**
* 根据主键查找并保存
* @param entityRequest
* @param options
* @returns {Promise.<T>}
*/
saveById: function (entityRequest, options) {
let Entity = this;
entityRequest = entityRequest || {};
//根据主键查找是否存在
let primaryKey = Entity.primaryKeyAttribute;
return Entity.findById(entityRequest[primaryKey])
.then(function (entity) {
if (entity) { //to update
return entity.update(entityRequest, options);
} else { //to create
return Entity.create(entityRequest, options);
}
})
.catch(function (e) {
logger.error('Class saveById', e);
throw e;
});
}
},
instanceMethods: {
/**
* 根据主键查找并保存
* @param options
* @returns {Promise.<T>}
*/
saveById: function (options) {
let entityRequest = this.toJSON();
let Entity = this.Model;
if (!Entity) {
throw new Error('wrong method caller');
}
//根据主键查找是否存在
let primaryKey = Entity.primaryKeyAttribute;
return Entity.findById(entityRequest[primaryKey])
.then(function (entity) {
if (entity) { //to update
return entity.update(entityRequest, options);
} else { //to create
return Entity.create(entityRequest, options);
}
})
.catch(function (e) {
logger.error('saveById', e);
throw e;
});
}
}
};
const sequelize = new Sequelize(config_sequelize.database, config_sequelize.username, config_sequelize.password, config_sequelize.options);
//加载表
const entitis_init = require('./entities-init');
global.po = entitis_init(sequelize);
if (config_sequelize.syncDB) {
//同步表结构db
logger.info('sync db');
sequelize.sync().then(function () {
logger.info('db init finished!');
});
} else {
logger.info('db init finished!');
}
// 兼容4.0模式,添加属性
sequelize.Op = Sequelize.Op;
sequelize.Transaction = Sequelize.Transaction;
sequelize.Model = Sequelize.Model;
sequelize.Utils = Sequelize.Utils;
return sequelize;
}();
module.exports = global.sequelize;