mm_mysql 1.9.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +161 -12
- package/package.json +33 -37
- package/test.js +174 -132
package/index.js
CHANGED
|
@@ -11,6 +11,7 @@ const {
|
|
|
11
11
|
} = require('./db');
|
|
12
12
|
|
|
13
13
|
const Link_model = require('./link_model');
|
|
14
|
+
const { table } = require('console');
|
|
14
15
|
|
|
15
16
|
var pool = {};
|
|
16
17
|
|
|
@@ -80,7 +81,7 @@ class Mysql {
|
|
|
80
81
|
* @param {Array} val 替换值
|
|
81
82
|
* @return {Promise|Array} 异步构造器, 当await时返回执行结果
|
|
82
83
|
*/
|
|
83
|
-
this.run = function(sql, val) {
|
|
84
|
+
this.run = function (sql, val) {
|
|
84
85
|
var _this = this;
|
|
85
86
|
this.sql = sql;
|
|
86
87
|
if ($this.config.log) {
|
|
@@ -89,7 +90,7 @@ class Mysql {
|
|
|
89
90
|
|
|
90
91
|
// 返回一个 Promise
|
|
91
92
|
return new Promise((resolve, reject) => {
|
|
92
|
-
$this.conn.getConnection(function(err, db) {
|
|
93
|
+
$this.conn.getConnection(function (err, db) {
|
|
93
94
|
if (err) {
|
|
94
95
|
_this.error = {
|
|
95
96
|
code: 2003,
|
|
@@ -131,7 +132,7 @@ class Mysql {
|
|
|
131
132
|
* @param {Array} val 替换值
|
|
132
133
|
* @return {Promise|Array} 异步构造器, 当await时返回执行结果
|
|
133
134
|
*/
|
|
134
|
-
this.exec = function(sql, val) {
|
|
135
|
+
this.exec = function (sql, val) {
|
|
135
136
|
var _this = this;
|
|
136
137
|
if (this.task) {
|
|
137
138
|
this.task_sql += sql + "\r\n";
|
|
@@ -153,7 +154,7 @@ class Mysql {
|
|
|
153
154
|
}
|
|
154
155
|
// 返回一个 Promise
|
|
155
156
|
return new Promise((resolve, reject) => {
|
|
156
|
-
$this.conn.getConnection(function(err, db) {
|
|
157
|
+
$this.conn.getConnection(function (err, db) {
|
|
157
158
|
if (err) {
|
|
158
159
|
_this.error = {
|
|
159
160
|
code: 41000,
|
|
@@ -182,7 +183,7 @@ class Mysql {
|
|
|
182
183
|
if (o.constructor == Array) {
|
|
183
184
|
if (o.length > 0) {
|
|
184
185
|
var num = 0;
|
|
185
|
-
o.map(function(item) {
|
|
186
|
+
o.map(function (item) {
|
|
186
187
|
num += item['affectedRows'];
|
|
187
188
|
});
|
|
188
189
|
if (num === 0) {
|
|
@@ -213,21 +214,169 @@ class Mysql {
|
|
|
213
214
|
/**
|
|
214
215
|
* @description 获取数据库管理器
|
|
215
216
|
*/
|
|
216
|
-
this.db = function() {
|
|
217
|
+
this.db = function () {
|
|
217
218
|
return new DB($this);
|
|
218
219
|
};
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
|
|
223
|
+
/**
|
|
224
|
+
* 导入数据库
|
|
225
|
+
* @param {Object} file sql文件
|
|
226
|
+
* @param {Function} func 回调函数
|
|
227
|
+
* @return {Promise} 异步构造器, 当await时返回执行结果
|
|
228
|
+
*/
|
|
229
|
+
Mysql.prototype.load = async function (file, func) {
|
|
230
|
+
var count = 0;
|
|
231
|
+
var progress = 0;
|
|
232
|
+
var errors = [];
|
|
233
|
+
var index = 0;
|
|
234
|
+
try {
|
|
235
|
+
var data = file.loadText();
|
|
236
|
+
// 将SQL文件内容分割成单独的语句
|
|
237
|
+
const arr = data.split(';\r\n');
|
|
238
|
+
count = arr.length;
|
|
239
|
+
for (var i = 0; i < arr.length; i++) {
|
|
240
|
+
var sql_str = arr[i].trim();
|
|
241
|
+
if (sql_str !== '') {
|
|
242
|
+
await this.run(sql_str + ";");
|
|
243
|
+
if (this.error) {
|
|
244
|
+
errors.push({
|
|
245
|
+
sql_str: sql_str.slice(0, 512),
|
|
246
|
+
error: this.error
|
|
247
|
+
});
|
|
248
|
+
// 如果数据库链接失败(密码错误或无法连接),则退出循环
|
|
249
|
+
if (this.error.code == 1045 || this.error.code == 2003) {
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
var p = i / arr.length;
|
|
255
|
+
progress = Math.ceil(p * 100);
|
|
256
|
+
index = i;
|
|
257
|
+
if (func) {
|
|
258
|
+
func(progress, index, this.error, sql_str);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
} catch (err) {
|
|
262
|
+
$.log.error("导入SQL文件失败!", err);
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
index,
|
|
266
|
+
count,
|
|
267
|
+
progress,
|
|
268
|
+
errors
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* 保存数据库为文件
|
|
274
|
+
* @param {String} file 文件对象
|
|
275
|
+
* @param {Function} func 回调函数
|
|
276
|
+
* @return {Promise} 异步构造器, 当await时返回执行结果
|
|
277
|
+
*/
|
|
278
|
+
Mysql.prototype.save = async function (file, func, tables = []) {
|
|
279
|
+
const fs = require('fs');
|
|
280
|
+
const stream = fs.createWriteStream(file);
|
|
281
|
+
let count = 0;
|
|
282
|
+
let progress = 0;
|
|
283
|
+
let errors = [];
|
|
284
|
+
let index = 0;
|
|
285
|
+
let tableCount = 0;
|
|
286
|
+
|
|
287
|
+
try {
|
|
288
|
+
// 开始导出数据库
|
|
289
|
+
stream.write('SET FOREIGN_KEY_CHECKS = 0;\r\n\r\n');
|
|
290
|
+
count++;
|
|
291
|
+
|
|
292
|
+
if(!tables.length) {
|
|
293
|
+
// 获取所有表
|
|
294
|
+
var tbs = await this.run('SHOW TABLES');
|
|
295
|
+
tables = tbs.map((item) => {
|
|
296
|
+
return item[Object.keys(item)[0]];
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
tableCount = tables.length;
|
|
301
|
+
console.log("tables", tables);
|
|
302
|
+
for (var i = 0; i < tables.length; i++) {
|
|
303
|
+
var tableName = tables[i];
|
|
304
|
+
try {
|
|
305
|
+
// 导出表结构
|
|
306
|
+
const createTable = await this.run(`SHOW CREATE TABLE ${tableName}`);
|
|
307
|
+
stream.write(`-- 表结构: ${tableName}\r\n`);
|
|
308
|
+
stream.write(`DROP TABLE IF EXISTS \`${tableName}\`;\r\n`);
|
|
309
|
+
count++;
|
|
310
|
+
stream.write(`${createTable[0]['Create Table']};\r\n\r\n`);
|
|
311
|
+
count++;
|
|
312
|
+
// 导出表数据
|
|
313
|
+
const rows = await this.run(`SELECT * FROM ${tableName}`);
|
|
314
|
+
if (rows.length > 0) {
|
|
315
|
+
stream.write(`-- 表数据: ${tableName}\r\n`);
|
|
316
|
+
for (const row of rows) {
|
|
317
|
+
const rowValues = Object.values(row)
|
|
318
|
+
.map(value => {
|
|
319
|
+
if (value === null) return 'NULL';
|
|
320
|
+
if (typeof value === 'boolean') return value ? 1 : 0;
|
|
321
|
+
if (typeof value === 'number') return value;
|
|
322
|
+
if (value instanceof Date) {
|
|
323
|
+
return "'" + value.toStr('yyyy-MM-dd hh:mm:ss') + "'";
|
|
324
|
+
}
|
|
325
|
+
// 处理字符串,转义特殊字符
|
|
326
|
+
return "'" + value.toString()
|
|
327
|
+
.replace(/[\\']/g, '\\$&')
|
|
328
|
+
.replace(/\n/g, '\\n')
|
|
329
|
+
.replace(/\r/g, '\\r')
|
|
330
|
+
.replace(/\t/g, '\\t')
|
|
331
|
+
.replace(/\u0000/g, '\\0') + "'";
|
|
332
|
+
})
|
|
333
|
+
.join(',');
|
|
334
|
+
stream.write(`INSERT INTO ${tableName} VALUES (${rowValues});\r\n`);
|
|
335
|
+
count++;
|
|
336
|
+
}
|
|
337
|
+
stream.write('\r\n');
|
|
338
|
+
}
|
|
339
|
+
} catch (err) {
|
|
340
|
+
errors.push({
|
|
341
|
+
table: tableName,
|
|
342
|
+
error: err.message
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
index++;
|
|
347
|
+
progress = Math.ceil((index / tableCount) * 100);
|
|
348
|
+
if (func) {
|
|
349
|
+
func(progress, index, this.error, tableName);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// 完成导出
|
|
354
|
+
stream.write('SET FOREIGN_KEY_CHECKS = 1;\r\n');
|
|
355
|
+
count++;
|
|
356
|
+
stream.end();
|
|
357
|
+
} catch (err) {
|
|
358
|
+
$.log.error("导出SQL文件失败!", err);
|
|
359
|
+
stream.end();
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
return {
|
|
363
|
+
tableCount,
|
|
364
|
+
index,
|
|
365
|
+
count,
|
|
366
|
+
progress,
|
|
367
|
+
errors
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
|
|
222
371
|
/**
|
|
223
372
|
* 获取数据库管理器
|
|
224
373
|
* @param {String} key 主键
|
|
225
|
-
* @param {String|Number} value 对象值
|
|
374
|
+
* @param {String|Number} value 对象值
|
|
226
375
|
* @param {Boolean} clear_prefix 清除前缀
|
|
227
376
|
* @param {Array} arr_table 关联的数据表
|
|
228
377
|
* @return {Object} 管理模型
|
|
229
378
|
*/
|
|
230
|
-
Mysql.prototype.dbs = async function(key, value, clear_prefix, ...arr_table) {
|
|
379
|
+
Mysql.prototype.dbs = async function (key, value, clear_prefix, ...arr_table) {
|
|
231
380
|
var lm = new Link_model({
|
|
232
381
|
key,
|
|
233
382
|
value,
|
|
@@ -244,9 +393,9 @@ Mysql.prototype.dbs = async function(key, value, clear_prefix, ...arr_table) {
|
|
|
244
393
|
* 设置配置参数
|
|
245
394
|
* @param {Object} cg 配置对象或配置路径
|
|
246
395
|
*/
|
|
247
|
-
Mysql.prototype.setConfig = function(cg) {
|
|
396
|
+
Mysql.prototype.setConfig = function (cg) {
|
|
248
397
|
var obj;
|
|
249
|
-
if (typeof(cg) === "string") {
|
|
398
|
+
if (typeof (cg) === "string") {
|
|
250
399
|
obj = cg.loadJson(this.dir);
|
|
251
400
|
} else {
|
|
252
401
|
obj = cg;
|
|
@@ -259,7 +408,7 @@ Mysql.prototype.setConfig = function(cg) {
|
|
|
259
408
|
* @description 打开数据库, 如果没有则建立数据库连接再打开
|
|
260
409
|
* @param {boolean} 是否重置
|
|
261
410
|
*/
|
|
262
|
-
Mysql.prototype.open = function(reset) {
|
|
411
|
+
Mysql.prototype.open = function (reset) {
|
|
263
412
|
if (reset || !this.state || !pool[this.identifier]) {
|
|
264
413
|
this.state = 1;
|
|
265
414
|
pool[this.identifier] = createPool(this.config);
|
|
@@ -270,7 +419,7 @@ Mysql.prototype.open = function(reset) {
|
|
|
270
419
|
/**
|
|
271
420
|
* @description 关闭连接
|
|
272
421
|
*/
|
|
273
|
-
Mysql.prototype.close = function() {
|
|
422
|
+
Mysql.prototype.close = function () {
|
|
274
423
|
if (pool[this.identifier]) {
|
|
275
424
|
pool[this.identifier].end();
|
|
276
425
|
pool[this.identifier] = null;
|
package/package.json
CHANGED
|
@@ -1,37 +1,33 @@
|
|
|
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
|
-
"url": "https://github.com/qiuwenwu/mm_mysql/issues"
|
|
35
|
-
},
|
|
36
|
-
"homepage": "https://github.com/qiuwenwu/mm_mysql#readme"
|
|
37
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mm_mysql",
|
|
3
|
+
"version": "1.9.2",
|
|
4
|
+
"description": "这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "node test.js",
|
|
8
|
+
"dev": "nodemon test.js"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://gitee.com/qiuwenwu91/mm_mysql.git"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"mysql",
|
|
16
|
+
"async",
|
|
17
|
+
"await",
|
|
18
|
+
"promise",
|
|
19
|
+
"add",
|
|
20
|
+
"del",
|
|
21
|
+
"set",
|
|
22
|
+
"get",
|
|
23
|
+
"query",
|
|
24
|
+
"run",
|
|
25
|
+
"exec"
|
|
26
|
+
],
|
|
27
|
+
"author": "qww",
|
|
28
|
+
"license": "ISC",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"mm_logs": "^1.1.7",
|
|
31
|
+
"mysql": "^2.18.1"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/test.js
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
const Mysql = require('./index.js').Mysql;
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* 测试导入sql文件
|
|
5
|
+
*/
|
|
6
|
+
async function test() {
|
|
7
|
+
var sql = new Mysql();
|
|
8
|
+
sql.setConfig({
|
|
9
|
+
database: 'test',
|
|
10
|
+
// 连接用户名
|
|
11
|
+
user: "root",
|
|
12
|
+
// 连接密码
|
|
13
|
+
password: "Asd159357",
|
|
14
|
+
multipleStatements: true
|
|
15
|
+
});
|
|
16
|
+
await sql.open();
|
|
17
|
+
// // 导入
|
|
18
|
+
// var ret = await sql.load("./data.sql".fullname(__dirname), function(progress, index, error, sql_str) {
|
|
19
|
+
// console.log("导入", progress, index, error, sql_str);
|
|
20
|
+
// });
|
|
21
|
+
// console.log("导入结果", ret);
|
|
22
|
+
|
|
23
|
+
// 导出指定表'user_account', 'user_info'
|
|
24
|
+
// var ret2 = await sql.save("./bat.sql".fullname(__dirname), function(progress, index, error, sql_str) {
|
|
25
|
+
// console.log("导出", progress, index, error, sql_str);
|
|
26
|
+
// }, ['user_account', 'user_info']);
|
|
27
|
+
// console.log("导出结果", ret2);
|
|
28
|
+
|
|
29
|
+
// // 导出
|
|
30
|
+
// var ret2 = await sql.save("./bat.sql".fullname(__dirname), function(progress, index, error, sql_str) {
|
|
31
|
+
// // console.log("导出", progress, index, error, sql_str);
|
|
32
|
+
// });
|
|
33
|
+
// console.log("导出结果", ret2);
|
|
34
|
+
|
|
35
|
+
// // 导入
|
|
36
|
+
// var ret = await sql.load("./bat.sql".fullname(__dirname), function(progress, index, error, sql_str) {
|
|
37
|
+
// // console.log("导入", progress, index, error, sql_str);
|
|
38
|
+
// });
|
|
39
|
+
// console.log("导入结果", ret);
|
|
40
|
+
|
|
41
|
+
sql.close();
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
test();
|
|
3
45
|
|
|
4
46
|
// function test() {
|
|
5
47
|
// var setSql = "`nickname`='hao,1,2,3',`gm`=5,`mc`=2,`group`='2,3'";
|
|
@@ -14,42 +56,42 @@ const Mysql = require('./index.js').Mysql;
|
|
|
14
56
|
// });
|
|
15
57
|
// sql.open();
|
|
16
58
|
|
|
17
|
-
var tpl = {
|
|
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
|
-
};
|
|
59
|
+
// var tpl = {
|
|
60
|
+
// "query": {
|
|
61
|
+
// "state_min": "`state` >= '{0}'",
|
|
62
|
+
// "state_max": "`state` <= '{0}'",
|
|
63
|
+
// "vip_min": "`vip` >= '{0}'",
|
|
64
|
+
// "vip_max": "`vip` <= '{0}'",
|
|
65
|
+
// "gm_min": "`gm` >= '{0}'",
|
|
66
|
+
// "gm_max": "`gm` <= '{0}'",
|
|
67
|
+
// "mc_min": "`mc` >= '{0}'",
|
|
68
|
+
// "mc_max": "`mc` <= '{0}'",
|
|
69
|
+
// "create_time_min": "`create_time` >= '{0}'",
|
|
70
|
+
// "create_time_max": "`create_time` <= '{0}'",
|
|
71
|
+
// "login_time_min": "`login_time` >= '{0}'",
|
|
72
|
+
// "login_time_max": "`login_time` <= '{0}'",
|
|
73
|
+
// "salt": "`salt` like '%{0}%'",
|
|
74
|
+
// "invite_code": "`invite_code` like '%{0}%'",
|
|
75
|
+
// "phone": "`phone` like '%{0}%'",
|
|
76
|
+
// "username": "`username` like '%{0}%'",
|
|
77
|
+
// "nickname": "`nickname` like '%{0}%'",
|
|
78
|
+
// "password": "`password` like '%{0}%'",
|
|
79
|
+
// "email": "`email` like '%{0}%'",
|
|
80
|
+
// "user_group": "`user_group` like '%{0}%'",
|
|
81
|
+
// "user_admin": "`user_admin` like '%{0}%'",
|
|
82
|
+
// "login_ip": "`login_ip` like '%{0}%'",
|
|
83
|
+
// "signature": "`signature` like '%{0}%'",
|
|
84
|
+
// "avatar": "`avatar` like '%{0}%'",
|
|
85
|
+
// "friends": "`friends` like '%{0}%'",
|
|
86
|
+
// "admin_group": "`admin_group` like '%{0}%'"
|
|
87
|
+
// },
|
|
88
|
+
// "update": {
|
|
89
|
+
// "state_add": "`state` = `state` + '{0}'",
|
|
90
|
+
// "vip_add": "`vip` = `vip` + '{0}'",
|
|
91
|
+
// "gm_add": "`gm` = `gm` + '{0}'",
|
|
92
|
+
// "mc_add": "`mc` = `mc` + '{0}'"
|
|
93
|
+
// }
|
|
94
|
+
// };
|
|
53
95
|
|
|
54
96
|
// // 测试模板修改
|
|
55
97
|
// async function test_tpl_set() {
|
|
@@ -76,112 +118,112 @@ var tpl = {
|
|
|
76
118
|
// }
|
|
77
119
|
// test_tpl_set();
|
|
78
120
|
|
|
79
|
-
async function test() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
sql.setConfig({
|
|
89
|
-
"user": "root",
|
|
90
|
-
"password": "Asd159357"
|
|
91
|
-
});
|
|
92
|
-
sql.open();
|
|
93
|
-
// sql.close();
|
|
94
|
-
// sql.open();
|
|
121
|
+
// async function test() {
|
|
122
|
+
// console.log('测试开始')
|
|
123
|
+
// var sql = new Mysql();
|
|
124
|
+
// var db = sql.db();
|
|
125
|
+
// // 是否输出语法
|
|
126
|
+
// // sql.config.log = false;
|
|
127
|
+
// // 忽视那些错误的输出,例如[1062],忽视主键重复插入
|
|
128
|
+
// // sql.config.log_ignore = [];
|
|
95
129
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
$.eventer.on("mysql_del_before:user_account", function(json) {
|
|
104
|
-
console.log("删除前", json);
|
|
105
|
-
});
|
|
106
|
-
$.eventer.on("mysql_del_after:user_account", function(json) {
|
|
107
|
-
console.log("删除后", json);
|
|
108
|
-
});
|
|
109
|
-
$.eventer.on("mysql_set_before:user_account", function(json) {
|
|
110
|
-
console.log("修改前", json);
|
|
111
|
-
});
|
|
112
|
-
$.eventer.on("mysql_set_after:user_account", function(json) {
|
|
113
|
-
console.log("修改后", json);
|
|
114
|
-
});
|
|
115
|
-
$.eventer.on("mysql_addOrSet_before:user_account", function(json) {
|
|
116
|
-
console.log("添加或修改前", json);
|
|
117
|
-
});
|
|
118
|
-
$.eventer.on("mysql_addOrSet_after:user_account", function(json) {
|
|
119
|
-
console.log("添加或修改后", json);
|
|
120
|
-
});
|
|
121
|
-
$.eventer.on("mysql_get_before:user_account", function(json) {
|
|
122
|
-
console.log("查询列表前", json);
|
|
123
|
-
});
|
|
124
|
-
$.eventer.on("mysql_get_after:user_account", function(json) {
|
|
125
|
-
console.log("查询列表后", json);
|
|
126
|
-
});
|
|
127
|
-
$.eventer.on("mysql_getObj_before:user_account", function(json) {
|
|
128
|
-
console.log("查询对象前", json);
|
|
129
|
-
});
|
|
130
|
-
$.eventer.on("mysql_getObj_after:user_account", function(json) {
|
|
131
|
-
console.log("查询对象后", json);
|
|
132
|
-
});
|
|
130
|
+
// sql.setConfig({
|
|
131
|
+
// "user": "root",
|
|
132
|
+
// "password": "Asd159357"
|
|
133
|
+
// });
|
|
134
|
+
// sql.open();
|
|
135
|
+
// // sql.close();
|
|
136
|
+
// // sql.open();
|
|
133
137
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
// // --- 测试事件 ---
|
|
139
|
+
// $.eventer.on("mysql_add_before:user_account", function(json) {
|
|
140
|
+
// console.log("添加前", json);
|
|
141
|
+
// });
|
|
142
|
+
// $.eventer.on("mysql_add_after:user_account", function(json) {
|
|
143
|
+
// console.log("添加后", json);
|
|
144
|
+
// });
|
|
145
|
+
// $.eventer.on("mysql_del_before:user_account", function(json) {
|
|
146
|
+
// console.log("删除前", json);
|
|
147
|
+
// });
|
|
148
|
+
// $.eventer.on("mysql_del_after:user_account", function(json) {
|
|
149
|
+
// console.log("删除后", json);
|
|
150
|
+
// });
|
|
151
|
+
// $.eventer.on("mysql_set_before:user_account", function(json) {
|
|
152
|
+
// console.log("修改前", json);
|
|
153
|
+
// });
|
|
154
|
+
// $.eventer.on("mysql_set_after:user_account", function(json) {
|
|
155
|
+
// console.log("修改后", json);
|
|
156
|
+
// });
|
|
157
|
+
// $.eventer.on("mysql_addOrSet_before:user_account", function(json) {
|
|
158
|
+
// console.log("添加或修改前", json);
|
|
159
|
+
// });
|
|
160
|
+
// $.eventer.on("mysql_addOrSet_after:user_account", function(json) {
|
|
161
|
+
// console.log("添加或修改后", json);
|
|
162
|
+
// });
|
|
163
|
+
// $.eventer.on("mysql_get_before:user_account", function(json) {
|
|
164
|
+
// console.log("查询列表前", json);
|
|
165
|
+
// });
|
|
166
|
+
// $.eventer.on("mysql_get_after:user_account", function(json) {
|
|
167
|
+
// console.log("查询列表后", json);
|
|
168
|
+
// });
|
|
169
|
+
// $.eventer.on("mysql_getObj_before:user_account", function(json) {
|
|
170
|
+
// console.log("查询对象前", json);
|
|
171
|
+
// });
|
|
172
|
+
// $.eventer.on("mysql_getObj_after:user_account", function(json) {
|
|
173
|
+
// console.log("查询对象后", json);
|
|
174
|
+
// });
|
|
140
175
|
|
|
141
|
-
|
|
142
|
-
|
|
176
|
+
// db.table = "user_account";
|
|
177
|
+
// db.key = "user_id,username";
|
|
178
|
+
// var obj = await db.getObj({
|
|
179
|
+
// user_id_has: "1"
|
|
180
|
+
// });
|
|
181
|
+
// obj.vip += 1;
|
|
143
182
|
|
|
144
|
-
|
|
145
|
-
|
|
183
|
+
// await db.add(obj);
|
|
184
|
+
// console.log("尝试重复插入", db.error);
|
|
146
185
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
console.log("语法2", db.sql, obj);
|
|
186
|
+
// // obj.vip -= 1;
|
|
187
|
+
// console.log("语法", db.sql, obj);
|
|
150
188
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
console.log("语法", db.sql, list.length);
|
|
189
|
+
// obj.nickname = '管理员';
|
|
190
|
+
// // obj.vip -= 1;
|
|
191
|
+
// console.log("语法2", db.sql, obj);
|
|
155
192
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
193
|
+
// var list = await db.get({
|
|
194
|
+
// user_id_has: "1,2,a-3,4,5"
|
|
195
|
+
// });
|
|
196
|
+
// console.log("语法", db.sql, list.length);
|
|
160
197
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
198
|
+
// var list = await db.get({
|
|
199
|
+
// user_id: "1"
|
|
200
|
+
// });
|
|
201
|
+
// console.log("查询语法", db.sql, list.length);
|
|
165
202
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
203
|
+
// var list = await db.get({
|
|
204
|
+
// user_id: "1"
|
|
205
|
+
// }, null, null, true);
|
|
206
|
+
// console.log("模糊查询语法", db.sql, list.length);
|
|
170
207
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
208
|
+
// var obj = await db.getObj({
|
|
209
|
+
// user_id_has: "1,2,a-3,4,5"
|
|
210
|
+
// });
|
|
211
|
+
// console.log("语法", db.sql, obj);
|
|
212
|
+
|
|
213
|
+
// var bl = await db.addOrSet({
|
|
214
|
+
// user_id: obj.user_id
|
|
215
|
+
// }, obj);
|
|
216
|
+
// console.log("语法", db.sql, bl);
|
|
217
|
+
|
|
218
|
+
// var obj = await db.getObj({}, "user_id desc");
|
|
219
|
+
// var obj_new = Object.assign({}, obj);
|
|
220
|
+
// obj_new.user_id += 1;
|
|
221
|
+
// var bl = await db.addOrSet({
|
|
222
|
+
// user_id: obj_new.user_id
|
|
223
|
+
// }, obj_new);
|
|
224
|
+
// console.log("语法", db.sql, bl);
|
|
225
|
+
// }
|
|
226
|
+
// test();
|
|
185
227
|
// setInterval(() => {
|
|
186
228
|
// test();
|
|
187
229
|
// }, 3000)
|