ming_node 2.2.3 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +10 -0
- package/beforeTest/ApiCloudBaseRpcApiTest.js +17 -0
- package/beforeTest/FileBaseRpcApiTest.js +8 -0
- package/beforeTest/MemorDbTest.js +16 -0
- package/beforeTest/MemoryBaseRestApiTest.js +8 -0
- package/beforeTest/MemoryBaseRpcApiTest.js +8 -0
- package/beforeTest/MiApiCloudClientTest.js +16 -0
- package/beforeTest/MongoDbBaseRestApiTest.js +22 -0
- package/beforeTest/MongoDbBaseRpcApiTest.js +19 -0
- package/beforeTest/MySqlBaseRestApiTest.js +13 -0
- package/beforeTest/MysqlBaseRpcApiTest.js +18 -0
- package/beforeTest/graphql_test.js +12 -0
- package/beforeTest/installPluginTest.js +10 -0
- package/index.js +125 -28
- package/ming_node.md +4 -4
- package/module/BaseMapper.js +37 -4
- package/module/MemoryDb.js +136 -0
- package/module/MiApiCloudClient.js +649 -0
- package/package.json +1 -1
- package/plugins/BaseGraphqlApi/getGraphqlSchema.js +145 -0
- package/plugins/BaseGraphqlApi/getGraphqlSchemaDemo.js +76 -0
- package/plugins/BaseGraphqlApi/index.js +23 -0
- package/plugins/BaseRestApi/AbstractBaseRestApi.js +59 -0
- package/plugins/BaseRestApi/ApiCloudBaseRestApi.js +56 -0
- package/plugins/BaseRestApi/FileBaseRestApi.js +62 -0
- package/plugins/BaseRestApi/MemoryBaseRestApi.js +50 -0
- package/plugins/BaseRestApi/MongoDbBaseRestApi.js +75 -0
- package/plugins/BaseRestApi/MysqlBaseRestApi.js +72 -0
- package/plugins/BaseRpcApi/AbstractBaseRpcApi.js +72 -0
- package/plugins/BaseRpcApi/ApiCloudBaseRpcApi.js +57 -0
- package/plugins/BaseRpcApi/FileBaseRpcApi.js +62 -0
- package/plugins/BaseRpcApi/MemoryBaseRpcApi.js +50 -0
- package/plugins/BaseRpcApi/MongoDbBaseRpcApi.js +75 -0
- package/plugins/BaseRpcApi/MysqlBaseRpcApi.js +72 -0
- package/utils/common/CollectionUtils.js +28 -0
- package/beforeTest/t1.js +0 -18
package/README.md
CHANGED
@@ -190,6 +190,16 @@ async function main(){
|
|
190
190
|
|
191
191
|
```
|
192
192
|
|
193
|
+
# Rpc风格,服务插件
|
194
|
+
[ming_node api插件.yuque](https://www.yuque.com/docs/share/f4444345-ea5b-4f3d-b0c7-ab267e901e81)
|
195
|
+
```js
|
196
|
+
var M=require("ming_node");
|
197
|
+
const Api= require("ming_node/plugins/BaseRpcApi/MemoryBaseRpcApi");
|
198
|
+
let api = new Api({tableName:"ming",generateTime:true})
|
199
|
+
var app=M.server();
|
200
|
+
app.listen(8888);
|
201
|
+
app.use(api);
|
202
|
+
```
|
193
203
|
|
194
204
|
# 基于ming_node 的 ming_api_mock
|
195
205
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
const ApiCloudBaseRpcApi= require("../plugins/BaseRpcApi/ApiCloudBaseRpcApi");
|
3
|
+
const MiApiCloudClient=require("../module/MiApiCloudClient");
|
4
|
+
const apiCloudClient = new MiApiCloudClient("A6032931027980", "FF279F8E-8B09-5F1A-1036-F6AE53F3538D");
|
5
|
+
let apiCloudBaseRpcApi = new ApiCloudBaseRpcApi(
|
6
|
+
{
|
7
|
+
prefix:"ming",
|
8
|
+
tableName:"ming",
|
9
|
+
apiCloudClient
|
10
|
+
}
|
11
|
+
)
|
12
|
+
|
13
|
+
var app=M.server();
|
14
|
+
|
15
|
+
app.listen(8888);
|
16
|
+
|
17
|
+
app.use(apiCloudBaseRpcApi);
|
@@ -0,0 +1,8 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
const FileBaseRpcApi= require("../plugins/BaseRpcApi/FileBaseRpcApi");
|
3
|
+
|
4
|
+
let fileBaseRpcApi = new FileBaseRpcApi({prefix:"ming", tableName:"a.json",generateTime:true})
|
5
|
+
var app=M.server();
|
6
|
+
app.listen(8888);
|
7
|
+
|
8
|
+
app.use(fileBaseRpcApi);
|
@@ -0,0 +1,8 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
const MemoryBaseRestApi= require("../plugins/BaseRestApi/MemoryBaseRestApi");
|
3
|
+
|
4
|
+
let memoryBaseRestApi = new MemoryBaseRestApi({tableName:"ming",generateTime:true})
|
5
|
+
var app=M.server();
|
6
|
+
app.listen(8888);
|
7
|
+
|
8
|
+
app.use(memoryBaseRestApi);
|
@@ -0,0 +1,16 @@
|
|
1
|
+
const MiApiCloudClient=require("../module/MiApiCloudClient")
|
2
|
+
|
3
|
+
|
4
|
+
M.MiApiCloudClient = new MiApiCloudClient("A6032931027980", "FF279F8E-8B09-5F1A-1036-F6AE53F3538D").tableClient("mi_user");
|
5
|
+
|
6
|
+
|
7
|
+
mi_resource.list({},null,null,"sort").then(d => {
|
8
|
+
let result = { rows: d }
|
9
|
+
console.log(result)
|
10
|
+
})
|
11
|
+
|
12
|
+
// mi_resource.add({
|
13
|
+
// username:"minglie2234"
|
14
|
+
// }).then(d=>{
|
15
|
+
// console.log(d)
|
16
|
+
// })
|
@@ -0,0 +1,22 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
|
3
|
+
|
4
|
+
Db= M.getMongoDB({
|
5
|
+
dbUrl: "mongodb://root:123456@localhost:27017/?authMechanism=SCRAM-SHA-1&authSource=miapi",
|
6
|
+
dbName:"miapi"
|
7
|
+
})
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
const MongoDbBaseRestApi= require("../plugins/BaseRestApi/MongoDbBaseRestApi");
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
let mongoDbBaseRestApi = new MongoDbBaseRestApi({tableName:"test",prefix:"ming", generateTime:true})
|
16
|
+
var app=M.server();
|
17
|
+
app.listen(8888);
|
18
|
+
|
19
|
+
app.use(mongoDbBaseRestApi);
|
20
|
+
|
21
|
+
|
22
|
+
console.log(M._globle_plugin)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
|
3
|
+
|
4
|
+
Db= M.getMongoDB({
|
5
|
+
dbUrl: "mongodb://root:123456@localhost:27017/?authMechanism=SCRAM-SHA-1&authSource=miapi",
|
6
|
+
dbName:"miapi"
|
7
|
+
})
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
const MongoDbBaseRpcApi= require("../plugins/BaseRpcApi/MongoDbBaseRpcApi");
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
let mongoDbBaseRpcApi = new MongoDbBaseRpcApi({tableName:"test",prefix:"ming", generateTime:true})
|
16
|
+
var app=M.server();
|
17
|
+
app.listen(8888);
|
18
|
+
|
19
|
+
app.use(mongoDbBaseRpcApi);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
const MysqlBaseRestApi= require("../plugins/BaseRestApi/MysqlBaseRestApi");
|
3
|
+
|
4
|
+
M.getMySql({
|
5
|
+
database:"miapi"
|
6
|
+
})
|
7
|
+
|
8
|
+
|
9
|
+
let mysqlBaseRestApi = new MysqlBaseRestApi({tableName:"ming",generateTime:true})
|
10
|
+
var app=M.server();
|
11
|
+
app.listen(8888);
|
12
|
+
|
13
|
+
app.use(mysqlBaseRestApi);
|
@@ -0,0 +1,18 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
|
3
|
+
|
4
|
+
M.getMySql({
|
5
|
+
database:"miapi"
|
6
|
+
})
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
const MysqlBaseRpcApi= require("../plugins/BaseRpcApi/MysqlBaseRpcApi");
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
let mysqlBaseRpcApi = new MysqlBaseRpcApi({tableName:"ming",generateTime:true})
|
15
|
+
var app=M.server();
|
16
|
+
app.listen(8888);
|
17
|
+
|
18
|
+
app.use(mysqlBaseRpcApi);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
var M = require('../index');
|
2
|
+
var BaseMapper=require("../module/BaseMapper")
|
3
|
+
var Db=M.getMySql({
|
4
|
+
"database" : "miapi"
|
5
|
+
})
|
6
|
+
let dbBaseMapper= new BaseMapper("person");
|
7
|
+
const BaseGraphqlApi= require("../plugins/BaseGraphqlApi/index");
|
8
|
+
let baseGraphqlApi = new BaseGraphqlApi({prefix:"person", dbBaseMapper});
|
9
|
+
|
10
|
+
var app = M.server()
|
11
|
+
app.listen(4000)
|
12
|
+
app.use(baseGraphqlApi);
|
package/index.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
/**
|
2
|
-
* File :
|
2
|
+
* File : MemoryBaseRpcApi.js
|
3
3
|
* By : Minglie
|
4
4
|
* QQ: 934031452
|
5
|
-
* Date :2021.
|
6
|
-
* version :2.
|
5
|
+
* Date :2021.12.01
|
6
|
+
* version :2.3.0
|
7
7
|
*/
|
8
8
|
var http = require('http');
|
9
9
|
var https = require('https');
|
@@ -32,6 +32,7 @@
|
|
32
32
|
M.httpProxy = {};// http 代理配置
|
33
33
|
M._sseClientMap=new Map();
|
34
34
|
M._sseHeatTime=3000;
|
35
|
+
M._moduleMap=new Map();//模块map
|
35
36
|
M.httpBefore = (d) => {
|
36
37
|
return d
|
37
38
|
}
|
@@ -41,13 +42,36 @@
|
|
41
42
|
M._globle_cacheMap = {}
|
42
43
|
//全局对象缓存
|
43
44
|
M._globle_lib_cacheMap={}
|
45
|
+
//全局插件地址缓存
|
46
|
+
M._globle_plugin_url_cacheMap={};
|
47
|
+
//全局插件
|
48
|
+
M._globle_plugin=new Set();
|
44
49
|
M._node_lib_path=process.env.NODE_PATH;
|
45
50
|
//远程静态资源路径
|
46
51
|
M.remoteStaticPath = "https://minglie.gitee.io/mingpage/static";
|
47
52
|
M.remoteStaticPathEnable = true;
|
48
53
|
//代理服务器配置
|
49
54
|
M.proxyHost = "http://127.0.0.1:8888"
|
50
|
-
M.proxyHost = ""
|
55
|
+
M.proxyHost = "";
|
56
|
+
|
57
|
+
M.setModule=function (key,module){
|
58
|
+
M._moduleMap.set(key,module);
|
59
|
+
}
|
60
|
+
M.getModule=function (key){
|
61
|
+
M._moduleMap.get(key);
|
62
|
+
}
|
63
|
+
|
64
|
+
M.getGloblePlugin=(pluginKey)=>{
|
65
|
+
let plugin=null;
|
66
|
+
M._globle_plugin.forEach(u=>{
|
67
|
+
if(u.key==pluginKey){
|
68
|
+
plugin=u;
|
69
|
+
}
|
70
|
+
})
|
71
|
+
return plugin;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
51
75
|
/**
|
52
76
|
* ----------------------客户端START--------------------------------------------
|
53
77
|
*/
|
@@ -657,13 +681,14 @@ M.request.put=M.put;
|
|
657
681
|
}
|
658
682
|
}
|
659
683
|
M.writeObjToFile(file, d);
|
684
|
+
return d_num;
|
660
685
|
}
|
661
686
|
|
662
687
|
M.updateObjByIdFile = function (file, obj) {
|
663
688
|
var d = M.getObjByFile(file);
|
664
689
|
for (let i = 0; i < d.length; i++) {
|
665
690
|
if (d[i].id == obj.id) {
|
666
|
-
d.splice(i, 1, obj);
|
691
|
+
d.splice(i, 1, Object.assign(d[i],obj));
|
667
692
|
break;
|
668
693
|
}
|
669
694
|
}
|
@@ -677,17 +702,28 @@ M.request.put=M.put;
|
|
677
702
|
}
|
678
703
|
}
|
679
704
|
}
|
680
|
-
M.listAllObjByPropFile = function (file,
|
681
|
-
|
682
|
-
let
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
705
|
+
M.listAllObjByPropFile = function (file, caseObj) {
|
706
|
+
var d = M.getObjByFile(file);
|
707
|
+
let o_keys = Object.keys(caseObj);
|
708
|
+
if (caseObj && o_keys.length>0) {
|
709
|
+
let r_list = [];
|
710
|
+
let o_vals = Object.values(caseObj);
|
711
|
+
for (let i = 0; i < d.length; i++) {
|
712
|
+
let s=0;
|
713
|
+
for (let j=0;j<o_keys.length;j++){
|
714
|
+
if (d[i][o_keys[j]] != o_vals[j]) {
|
715
|
+
break
|
716
|
+
}
|
717
|
+
s++;
|
718
|
+
}
|
719
|
+
if(s==o_keys.length){
|
720
|
+
r_list.push(d[i]);
|
721
|
+
}
|
688
722
|
}
|
723
|
+
return r_list;
|
724
|
+
} else {
|
725
|
+
return d;
|
689
726
|
}
|
690
|
-
return r_list;
|
691
727
|
}
|
692
728
|
/**
|
693
729
|
* 文件型数据库第二层封装
|
@@ -976,6 +1012,7 @@ M.getMySql = function (dbConfig) {
|
|
976
1012
|
timezone: "08:00"
|
977
1013
|
}
|
978
1014
|
var Db = {};
|
1015
|
+
Db.dbConfig=defaultDbConfig;
|
979
1016
|
console.log("connect mysql", defaultDbConfig)
|
980
1017
|
var pool = mysql.createPool(defaultDbConfig);
|
981
1018
|
Db.pool=pool;
|
@@ -1209,8 +1246,9 @@ M.getMongoDB = function (dbConfig) {
|
|
1209
1246
|
}
|
1210
1247
|
|
1211
1248
|
}
|
1212
|
-
|
1213
|
-
|
1249
|
+
MingMongoClient.ObjectID=(id)=> new ObjectID(id)
|
1250
|
+
let Db=MingMongoClient;
|
1251
|
+
Db.dbConfig=Config;
|
1214
1252
|
MingMongoClient.collectionName="test"
|
1215
1253
|
M.mongoDb=Db;
|
1216
1254
|
return Db;
|
@@ -1358,6 +1396,40 @@ M.failResult=(msg,code,d)=>{
|
|
1358
1396
|
M.randomStr = function () {
|
1359
1397
|
return (Math.random().toString(36) + new Date().getTime()).slice(2);
|
1360
1398
|
}
|
1399
|
+
|
1400
|
+
M.urlStringify = function (obj) {
|
1401
|
+
if (obj !== null && typeof obj === 'object') {
|
1402
|
+
var keys = Object.keys(obj);
|
1403
|
+
var len = keys.length;
|
1404
|
+
var flast = len - 1;
|
1405
|
+
var fields = '';
|
1406
|
+
for (var i = 0; i < len; ++i) {
|
1407
|
+
var k = keys[i];
|
1408
|
+
var v = obj[k];
|
1409
|
+
var ks = k + "=";
|
1410
|
+
fields += ks + v;
|
1411
|
+
if (i < flast)
|
1412
|
+
fields += "&";
|
1413
|
+
}
|
1414
|
+
return fields;
|
1415
|
+
}
|
1416
|
+
return '';
|
1417
|
+
};
|
1418
|
+
|
1419
|
+
M.urlParse = function (url) {
|
1420
|
+
url = url.substr(url.indexOf("?") + 1);
|
1421
|
+
var t, n, r, i = url, s = {};
|
1422
|
+
t = i.split("&"),
|
1423
|
+
r = null,
|
1424
|
+
n = null;
|
1425
|
+
for (var o in t) {
|
1426
|
+
var u = t[o].indexOf("=");
|
1427
|
+
u !== -1 && (r = t[o].substr(0, u),
|
1428
|
+
n = t[o].substr(u + 1),
|
1429
|
+
s[r] = n)
|
1430
|
+
}
|
1431
|
+
return s
|
1432
|
+
};
|
1361
1433
|
|
1362
1434
|
/**
|
1363
1435
|
* 异常处理钩子
|
@@ -1663,16 +1735,43 @@ M.failResult=(msg,code,d)=>{
|
|
1663
1735
|
G._server = callback;
|
1664
1736
|
}
|
1665
1737
|
app.use=function (url,callback){
|
1666
|
-
if
|
1667
|
-
url
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1738
|
+
if(typeof url === 'function' || typeof url === 'object' ){
|
1739
|
+
let plugin=url;
|
1740
|
+
let args=callback;
|
1741
|
+
if(plugin.installed){
|
1742
|
+
return app;
|
1743
|
+
}
|
1744
|
+
if (typeof plugin === 'function') {
|
1745
|
+
plugin(app, args);
|
1746
|
+
} else {
|
1747
|
+
plugin.install(app, args);
|
1748
|
+
}
|
1749
|
+
M._globle_plugin.add(plugin);
|
1750
|
+
plugin.installed = true;
|
1751
|
+
}else {
|
1752
|
+
if (Array.isArray(url)) {
|
1753
|
+
url.forEach(u=>{
|
1754
|
+
let regExp=new RegExp(u)
|
1755
|
+
G._use[u] = {url,regExp,callback};
|
1756
|
+
})
|
1757
|
+
} else {
|
1758
|
+
let regExp=new RegExp(url)
|
1759
|
+
G._use[url] = {url,regExp,callback};
|
1760
|
+
}
|
1674
1761
|
}
|
1762
|
+
return app;
|
1675
1763
|
}
|
1764
|
+
|
1765
|
+
app.installPlugin=async function (pluginUrl,constructorParams,pluginParams){
|
1766
|
+
if(M._globle_plugin_url_cacheMap[pluginUrl]){
|
1767
|
+
return
|
1768
|
+
}
|
1769
|
+
M._globle_plugin_url_cacheMap[pluginUrl]=pluginUrl;
|
1770
|
+
const Plugin= await M.require(pluginUrl);
|
1771
|
+
const plugin= new Plugin(constructorParams);
|
1772
|
+
app.use(plugin,pluginParams)
|
1773
|
+
}
|
1774
|
+
|
1676
1775
|
/**
|
1677
1776
|
* 注册get请求
|
1678
1777
|
*/
|
@@ -1766,9 +1865,8 @@ M.failResult=(msg,code,d)=>{
|
|
1766
1865
|
app.set("gloable_exception_handle",(err,req,res)=>{
|
1767
1866
|
console.error(err.stack)
|
1768
1867
|
if (res && !res.alreadySend) {
|
1769
|
-
|
1770
|
-
res.
|
1771
|
-
res.end();
|
1868
|
+
// res.writeHead(500, { "Content-Type": "text/j;charset='utf-8'" });
|
1869
|
+
res.send(M.result(err.message,false,-1));
|
1772
1870
|
}
|
1773
1871
|
})
|
1774
1872
|
|
@@ -1812,7 +1910,6 @@ M.failResult=(msg,code,d)=>{
|
|
1812
1910
|
console.log("listen on port:" + port);
|
1813
1911
|
return server;
|
1814
1912
|
}
|
1815
|
-
|
1816
1913
|
return app;
|
1817
1914
|
}
|
1818
1915
|
M["_gloable_exception_handle"]=(err)=>{
|
package/ming_node.md
CHANGED
@@ -1001,7 +1001,7 @@ console.log(new Date().format("yyyy-MM-dd"))
|
|
1001
1001
|
在含有static文件夹的目录执行下面命令,static便作为web根目录
|
1002
1002
|
```bash
|
1003
1003
|
#node
|
1004
|
-
curl https://minglie.github.io/js/
|
1004
|
+
curl https://minglie.github.io/js/MemoryBaseRpcApi.js > MemoryBaseRpcApi.js && node MemoryBaseRpcApi.js
|
1005
1005
|
#python
|
1006
1006
|
curl https://minglie.github.io/python/index.py > index.py && python index.py
|
1007
1007
|
|
@@ -1009,12 +1009,12 @@ curl https://minglie.github.io/python/index.py > index.py && python index.py
|
|
1009
1009
|
git clone https://github.com/minglie/ming_mockServer.git && cd ming_mockServer && npm i && npm run start
|
1010
1010
|
|
1011
1011
|
#curl启动ming_mockServer0
|
1012
|
-
curl https://minglie.gitee.io/mingpage/static/js/ming_mockServer0.js >
|
1012
|
+
curl https://minglie.gitee.io/mingpage/static/js/ming_mockServer0.js > MemoryBaseRpcApi.js && node MemoryBaseRpcApi.js
|
1013
1013
|
|
1014
1014
|
```
|
1015
1015
|
## 当前目录静态页
|
1016
1016
|
```javascript
|
1017
|
-
curl https://minglie.gitee.io/mingpage/static/js/index_cur.js >
|
1017
|
+
curl https://minglie.gitee.io/mingpage/static/js/index_cur.js > MemoryBaseRpcApi.js && node MemoryBaseRpcApi.js
|
1018
1018
|
```
|
1019
1019
|
```javascript
|
1020
1020
|
+async function(){
|
@@ -1082,7 +1082,7 @@ app.post("/axios", async (req, res) => {
|
|
1082
1082
|
## 写web接口最快捷的方式ming_share_edit
|
1083
1083
|
运行脚本, 访问 [http://localhost:8888/](http://localhost:8888/)
|
1084
1084
|
```bash
|
1085
|
-
curl https://minglie.gitee.io/mi/i2.js >
|
1085
|
+
curl https://minglie.gitee.io/mi/i2.js > MemoryBaseRpcApi.js && node MemoryBaseRpcApi.js
|
1086
1086
|
```
|
1087
1087
|
![image.png](https://ming-bucket-01.oss-cn-beijing.aliyuncs.com/yuque/1591515706715-62d3b6f6-f113-497f-a532-63792180cd09.png#align=left&display=inline&height=506&margin=%5Bobject%20Object%5D&name=image.png&originHeight=506&originWidth=720&size=65942&status=done&style=none&width=720)
|
1088
1088
|
## ming_api_mock
|
package/module/BaseMapper.js
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
const M=require("
|
2
|
-
const Db=M.getMySql({})
|
1
|
+
const M=require("../index")
|
2
|
+
const Db=M.getMySql({});
|
3
3
|
|
4
4
|
class BaseMapper {
|
5
|
+
|
6
|
+
//static BaseMapperMap=new Map();
|
7
|
+
|
5
8
|
constructor(tableName) {
|
6
9
|
this.tableName =tableName;
|
10
|
+
this.tableSchema=null;
|
11
|
+
//BaseMapper.BaseMapperMap.set(tableName,this);
|
7
12
|
}
|
8
13
|
|
9
14
|
/**
|
@@ -12,6 +17,7 @@ class BaseMapper {
|
|
12
17
|
* @returns {Promise<*>}
|
13
18
|
*/
|
14
19
|
async insert(obj){
|
20
|
+
delete obj.id;
|
15
21
|
let sql= BaseMapper.getInsertObjSql(this.tableName,obj)
|
16
22
|
let r=await Db.doSql(sql);
|
17
23
|
return r;
|
@@ -52,7 +58,7 @@ class BaseMapper {
|
|
52
58
|
}
|
53
59
|
|
54
60
|
/**
|
55
|
-
|
61
|
+
* 删除
|
56
62
|
* @param caseStr
|
57
63
|
* @returns {Promise<*>}
|
58
64
|
*/
|
@@ -139,7 +145,7 @@ class BaseMapper {
|
|
139
145
|
let dataList=await Db.doSql(`SELECT ${queryColumn} FROM ${this.tableName} where ${whereCase} order by ${order} LIMIT ${start},${num}`)
|
140
146
|
let totalR=await Db.doSql(`SELECT count(1) c FROM ${this.tableName} where ${whereCase}`)
|
141
147
|
let total=totalR[0].c
|
142
|
-
return {dataList,total};
|
148
|
+
return {rows:dataList,total};
|
143
149
|
}
|
144
150
|
|
145
151
|
/**
|
@@ -157,6 +163,23 @@ class BaseMapper {
|
|
157
163
|
return dataList;
|
158
164
|
}
|
159
165
|
|
166
|
+
|
167
|
+
/**
|
168
|
+
* 分页查
|
169
|
+
* @param page
|
170
|
+
* @param num
|
171
|
+
* @param queryCase
|
172
|
+
* @param columns
|
173
|
+
* @param order
|
174
|
+
*/
|
175
|
+
async selectPurePageList({page=1,num=10,queryCase="1=1", columns="*",order="id desc"}){
|
176
|
+
let start = (page - 1) * num;
|
177
|
+
let whereCase=queryCase;
|
178
|
+
let queryColumn=BaseMapper.getColumn(columns);
|
179
|
+
let dataList=await Db.doSql(`SELECT ${queryColumn} FROM ${this.tableName} where ${whereCase} order by ${order} LIMIT ${start},${num}`)
|
180
|
+
return dataList;
|
181
|
+
}
|
182
|
+
|
160
183
|
/**
|
161
184
|
* 查后代
|
162
185
|
* @param parent_id
|
@@ -213,6 +236,14 @@ class BaseMapper {
|
|
213
236
|
return rootList;
|
214
237
|
}
|
215
238
|
|
239
|
+
async getTableSchema(){
|
240
|
+
if(this.tableSchema==null){
|
241
|
+
let dataBaseName=Db.dbConfig.database;
|
242
|
+
let sql=`select column_name,column_type,column_comment from information_schema.columns where table_schema ='${dataBaseName}' and table_name = '${this.tableName}';`
|
243
|
+
let tableSchema=await Db.doSql(sql);
|
244
|
+
return tableSchema;
|
245
|
+
}
|
246
|
+
}
|
216
247
|
|
217
248
|
|
218
249
|
static getColumn(columns){
|
@@ -289,6 +320,8 @@ class BaseMapper {
|
|
289
320
|
return sql;
|
290
321
|
}
|
291
322
|
|
323
|
+
|
324
|
+
|
292
325
|
}
|
293
326
|
|
294
327
|
|