ming_node 2.9.0 → 2.9.5

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -55,7 +55,7 @@ app.get("/getSession",(req,res)=>{
55
55
  ```javascript
56
56
  +async function(){
57
57
  M =await new Promise((v)=>require('https').get("https://minglie.github.io/js/ming_node.js",(q)=>{d='';q.on('data',(a)=>d+=a);q.on('end',()=>v(eval(d)))}))
58
- var app=M.server();
58
+ var app=M.server();
59
59
  app.listen(8888);
60
60
  app.get("/",async (req,res)=>{
61
61
  app.redirect("/index.html",req,res)
@@ -110,13 +110,21 @@ app.listen(8888);
110
110
  app.get("/baidu",(req,res)=>{
111
111
  console.log(req.params);
112
112
  //响应html文本
113
- // res.renderHtml("hello woed")
113
+ res.renderHtml("hello woed")
114
114
  //响应js文本
115
- //res.renderJs("alert(5)")
115
+ res.renderJs("alert(5)")
116
116
  //响应本地文件
117
- //res.renderUrl("file:D:/G/ming_node/test/test.html");
117
+ res.renderUrl("file:D:/G/ming_node/test/test.html");
118
118
  //响应百度首页
119
119
  res.renderUrl("https://www.baidu.com/index.html");
120
+ //响应一个网络文件,支持二进制
121
+ res.sendFile("https://ming/a.txt");
122
+ //响应一个本地文件,支持二进制
123
+ res.sendFile("file:C:/Users/a.txt");
124
+ //响应一个网络文件,支持二进制,浏览器直接下载
125
+ res.sendFile("https://ming/a.txt",true);
126
+ //响应一个本地文件,支持二进制,浏览器直接下载
127
+ res.sendFile("file:C:/Users/a.txt",true);
120
128
  })
121
129
 
122
130
  ```
@@ -0,0 +1,18 @@
1
+ FileDb=require("../module/FileDb")
2
+
3
+ db= new FileDb("a.json",false)
4
+
5
+ db.add({
6
+ name:"zs"
7
+ })
8
+
9
+ console.log(db.listByPage({caseObj:{
10
+ "$name":"s"
11
+ }}))
12
+
13
+
14
+ db.add({
15
+ name:"ls"
16
+ })
17
+
18
+ console.log(db.listByPage({}))
@@ -6,11 +6,13 @@ db.add({
6
6
  name:"zs"
7
7
  })
8
8
 
9
- console.log(db.listByPage())
9
+ console.log(db.listByPage({caseObj:{
10
+ "$name":"s"
11
+ }}))
10
12
 
11
13
 
12
14
  db.add({
13
15
  name:"ls"
14
16
  })
15
17
 
16
- console.log(db.listByPage())
18
+ console.log(db.listByPage({}))
@@ -0,0 +1,3 @@
1
+ let restart= require("../utils/nodemon/restart");
2
+ restart("test.js","test.js")
3
+
@@ -4,5 +4,5 @@ app=M.server()
4
4
  app.listen(8888)
5
5
 
6
6
  app.get(["/h15","/h16","/h18888"],(req,res)=>{
7
- res.send("BBBB")
7
+ res.send("BBBBXXXEEEEE")
8
8
  })
package/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * By : Minglie
4
4
  * QQ: 934031452
5
5
  * Date :2021.12.01
6
- * version :2.8.0
6
+ * version :2.9.5
7
7
  */
8
8
  var http = require('http');
9
9
  var https = require('https');
@@ -437,23 +437,22 @@ M.import=async function (url,callback){
437
437
  /**
438
438
  *下载图片
439
439
  */
440
- M.download = function (url, file, callback) {
440
+ M.download =async function (url, file) {
441
441
  var func = http;
442
442
  if (url.indexOf("https") >= 0) {
443
443
  func = https;
444
444
  }
445
- func.get(url, function (res) {
446
- res.setEncoding('binary');//转成二进制
447
- var content = '';
448
- res.on('data', function (data) {
449
- content += data;
450
- }).on('end', function () {
451
- if (callback) callback();
452
- fs.writeFile(file, content, 'binary', function (err) {
453
- if (err) throw err;
454
- });
445
+ return new Promise(((resolve, reject) => {
446
+ func.get(url, function (res) {
447
+ let writeStream = fs.createWriteStream(file);
448
+ res.on("end",d=>{
449
+ resolve(file);
450
+ }).on("error",e=>{
451
+ reject(e);
452
+ }).pipe(writeStream);
455
453
  });
456
- });
454
+ }))
455
+
457
456
  }
458
457
  /**
459
458
  *下载所有图片
@@ -823,10 +822,8 @@ M.readLine =async function (file, callback) {
823
822
  }
824
823
  });
825
824
  input.on('end', function () {
826
- if (remaining.length > 0) {
827
- resolve(lineCount);
828
- callback(remaining);
829
- }
825
+ resolve(lineCount);
826
+ callback(remaining);
830
827
  });
831
828
  } )
832
829
  }
@@ -1579,6 +1576,47 @@ M.server = function () {
1579
1576
  G._end(req,text);
1580
1577
  }
1581
1578
 
1579
+
1580
+ res.sendFile= async function (url,isDownLoad=false) {
1581
+ let extname = path.extname(url);
1582
+ let fileName=M.getFileNameByUrl(url);
1583
+ if(url.startsWith("file")){
1584
+ url= url.substring(5);
1585
+ res.setHeader("Access-Control-Allow-Origin", "*");
1586
+ res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
1587
+ res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
1588
+ res.setHeader("X-Powered-By", ' 3.2.1');
1589
+ if(isDownLoad){
1590
+ res.setHeader("Content-Disposition", "attachment;filename="+encodeURIComponent(fileName,"utf-8"));
1591
+ }
1592
+ res.writeHead(200, {"Content-Type": "" + (privateObj.staticMime[extname] || 'text/html') + ";charset='utf-8'",});
1593
+ fs.createReadStream(url).on("end",d=>{})
1594
+ .on("error",e=>{
1595
+ console.error(e);
1596
+ }).pipe(res);
1597
+ }else {
1598
+ var func = http;
1599
+ if (url.indexOf("https") >= 0) {
1600
+ func = https;
1601
+ }
1602
+ func.get(url, function (res1) {
1603
+ res.setHeader("Access-Control-Allow-Origin", "*");
1604
+ res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
1605
+ res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
1606
+ res.setHeader("X-Powered-By", ' 3.2.1');
1607
+ if(isDownLoad){
1608
+ res.setHeader("Content-Disposition", "attachment;filename="+encodeURIComponent(fileName,"utf-8"));
1609
+ }
1610
+ res.writeHead(200, {"Content-Type": "" + (privateObj.staticMime[extname] || 'text/html') + ";charset='utf-8'",});
1611
+ res1.on("end",d=>{})
1612
+ .on("error",e=>{
1613
+ console.error(e)
1614
+ }).pipe(res);
1615
+ });
1616
+ }
1617
+ }
1618
+
1619
+
1582
1620
  res.render = async function (url) {
1583
1621
  res.alreadySend = true;
1584
1622
  let text="";
@@ -1628,6 +1666,14 @@ M.server = function () {
1628
1666
  res.end();
1629
1667
  G._end(req,text);
1630
1668
  }
1669
+ //扩充res一个renderHtml方法
1670
+ res.renderCss = function (text) {
1671
+ res.alreadySend = true;
1672
+ res.writeHead(200, {"Content-Type": "text/css;charset='utf-8'"});
1673
+ res.write(text);
1674
+ res.end();
1675
+ G._end(req,text);
1676
+ }
1631
1677
  res.redirect = function (url) {
1632
1678
  res.alreadySend = true;
1633
1679
  res.writeHead(302, {'Content-Type': 'text/html; charset=utf-8', 'Location': url});
@@ -2036,8 +2082,9 @@ M.axios = function (axiosConfig) {
2036
2082
  privateObj.dealUseServer = async function (req, res) {
2037
2083
  for (let key in M._use){
2038
2084
  if(M._use[key].regExp.test(req.url)){
2039
- await M._use[key].callback(req,res);
2040
- return;
2085
+ if(!res.alreadySend){
2086
+ await M._use[key].callback(req,res);
2087
+ }
2041
2088
  }
2042
2089
  }
2043
2090
  }
@@ -0,0 +1,193 @@
1
+ /**
2
+ * File : MemoryDb.js
3
+ * By : Minglie
4
+ * QQ: 934031452
5
+ * Date :2021.09.14
6
+ * rem : 文件数据库
7
+ */
8
+
9
+ const M=require("../index");
10
+
11
+ class FileDb{
12
+
13
+ constructor(tableName,readFromMemory=true) {
14
+ this.tableName=tableName;
15
+ this.readFromMemory=readFromMemory;
16
+ this.dataList=M.getObjByFile(this.tableName)
17
+ }
18
+
19
+ readFromFile(){
20
+ if(this.readFromMemory){
21
+ return
22
+ }else {
23
+ this.dataList=M.getObjByFile(this.tableName);
24
+ }
25
+ }
26
+
27
+ /**
28
+ * 单个加
29
+ * @param obj
30
+ * @returns {Promise<*>}
31
+ */
32
+ async add(obj){
33
+ this.readFromFile();
34
+ obj.id = M.randomStr();
35
+ this.dataList=[...this.dataList,obj];
36
+ M.writeObjToFile(this.tableName,this.dataList)
37
+ return obj;
38
+ }
39
+
40
+ async update(obj){
41
+ this.readFromFile();
42
+ for (let i = 0; i < this.dataList.length; i++) {
43
+ if (this.dataList[i].id == obj.id) {
44
+ this.dataList[i]=obj;
45
+ return
46
+ }
47
+ }
48
+ M.writeObjToFile(this.tableName,this.dataList)
49
+ }
50
+
51
+ listAll(caseObj){
52
+ this.readFromFile();
53
+ let o_keys=[];
54
+ if(caseObj){
55
+ o_keys = Object.keys(caseObj);
56
+ }
57
+ if (caseObj && o_keys.length>0) {
58
+ let r_list = [];
59
+ let o_vals = Object.values(caseObj);
60
+ var d = this.dataList;
61
+ for (let i = 0; i < d.length; i++) {
62
+ let s=0;
63
+ for (let j=0;j<o_keys.length;j++){
64
+ if(o_keys[j][0]=="$"){
65
+ let realKey=o_keys[j].replace("$","");
66
+ if (d[i][realKey].indexOf(o_vals[j])==-1) {
67
+ break
68
+ }
69
+ }else {
70
+ if (d[i][o_keys[j]] != o_vals[j]) {
71
+ break
72
+ }
73
+ }
74
+ s++;
75
+ }
76
+ if(s==o_keys.length){
77
+ r_list.push(d[i]);
78
+ }
79
+ }
80
+ return r_list;
81
+ } else {
82
+ return this.dataList;
83
+ }
84
+ }
85
+
86
+
87
+ listByPage({page=0, num=10, caseObj,order}) {
88
+ page=Number.parseInt(page);
89
+ num=Number.parseInt(num);
90
+ if (page <= 0) page = 1;
91
+ let rows;
92
+ if (caseObj) {
93
+ rows = this.listAll(caseObj);
94
+ } else {
95
+ rows = this.listAll();
96
+ }
97
+ if(order){
98
+ let orderArr= order.split(" ");
99
+ let orderField=orderArr[0];
100
+ let orderType=orderArr[1];
101
+ rows.sort((a,b)=>{
102
+ let ret=0;
103
+ let a_order_v=0;
104
+ let b_order_v=0;
105
+ if(a[orderField]!=null){
106
+ a_order_v=a[orderField];
107
+ }
108
+ if(b[orderField]!=null){
109
+ b_order_v=b[orderField];
110
+ }
111
+ if (a_order_v>b_order_v) {
112
+ ret= 1;
113
+ }else if(a_order_v<b_order_v){
114
+ ret= -1
115
+ }else{
116
+ ret= 0;
117
+ }
118
+ if(orderType=="asc"){
119
+ return ret;
120
+ }else {
121
+ return -1*ret;
122
+ }
123
+ })
124
+ }
125
+ let total = rows.length;
126
+ rows=JSON.parse(JSON.stringify(rows))
127
+ rows = rows.splice((page - 1) * num, num)
128
+ return {rows, total}
129
+ }
130
+
131
+
132
+ deleteAll(o) {
133
+ this.readFromFile();
134
+ if (o) {
135
+ let r_list = [];
136
+ let o_keys = Object.keys(o);
137
+ let o_vals = Object.values(o)
138
+ var d = this.dataList;
139
+ let delete_index=[]
140
+ for (let i = 0; i < d.length; i++) {
141
+ let s=0;
142
+ for (let j=0;j<o_keys.length;j++){
143
+ if (d[i][o_keys[j]] != o_vals[j]) {
144
+ break
145
+ }
146
+ s++;
147
+ }
148
+ if(s==o_keys.length){
149
+ delete_index.push(i)
150
+ }
151
+ }
152
+ for (let i = 0; i < d.length; i++) {
153
+ if(!delete_index.includes(i)){
154
+ r_list.push(d[i])
155
+ }
156
+ }
157
+ this.dataList=r_list;
158
+ return delete_index.length;
159
+ } else {
160
+ let length=this.dataList.length;
161
+ this.dataList=[];
162
+ return length;
163
+ }
164
+ M.writeObjToFile(this.tableName,this.dataList)
165
+ }
166
+
167
+ getById(id) {
168
+ this.readFromFile();
169
+ var d = this.dataList;
170
+ for (let i = 0; i < d.length; i++) {
171
+ if(d[i].id==id){
172
+ return d[i];
173
+ }
174
+ }
175
+ return null;
176
+ }
177
+
178
+ deleteById(id) {
179
+ this.readFromFile();
180
+ var d = this.dataList;
181
+ for (let i = 0; i < d.length; i++) {
182
+ if(d[i].id==id){
183
+ this.dataList.splice(i, 1);
184
+ return id;
185
+ }
186
+ }
187
+ M.writeObjToFile(this.tableName,this.dataList)
188
+ return 0;
189
+ }
190
+ }
191
+
192
+
193
+ module.exports = FileDb;
@@ -36,7 +36,10 @@ class MemoryDb{
36
36
  }
37
37
 
38
38
  listAll(caseObj){
39
- let o_keys = Object.keys(caseObj);
39
+ let o_keys=[];
40
+ if(caseObj){
41
+ o_keys = Object.keys(caseObj);
42
+ }
40
43
  if (caseObj && o_keys.length>0) {
41
44
  let r_list = [];
42
45
  let o_vals = Object.values(caseObj);
@@ -44,8 +47,15 @@ class MemoryDb{
44
47
  for (let i = 0; i < d.length; i++) {
45
48
  let s=0;
46
49
  for (let j=0;j<o_keys.length;j++){
47
- if (d[i][o_keys[j]] != o_vals[j]) {
48
- break
50
+ if(o_keys[j][0]=="$"){
51
+ let realKey=o_keys[j].replace("$","");
52
+ if (d[i][realKey].indexOf(o_vals[j])==-1) {
53
+ break
54
+ }
55
+ }else {
56
+ if (d[i][o_keys[j]] != o_vals[j]) {
57
+ break
58
+ }
49
59
  }
50
60
  s++;
51
61
  }
@@ -60,19 +70,39 @@ class MemoryDb{
60
70
  }
61
71
 
62
72
 
63
- listByPage(startPage=0, limit=10, caseObj) {
64
- startPage=Number.parseInt(startPage);
65
- limit=Number.parseInt(limit);
66
- if (startPage <= 0) startPage = 1;
73
+ listByPage({page=0, num=10, caseObj,order}) {
74
+ page=Number.parseInt(page);
75
+ num=Number.parseInt(num);
76
+ if (page <= 0) page = 1;
67
77
  let rows;
68
78
  if (caseObj) {
69
79
  rows = this.listAll(caseObj);
70
80
  } else {
71
81
  rows = this.listAll();
72
82
  }
83
+ if(order){
84
+ let orderArr= order.split(" ");
85
+ let orderField=orderArr[0];
86
+ let orderType=orderArr[1];
87
+ rows.sort((a,b)=>{
88
+ let ret=0;
89
+ if (a[orderField]>b[orderField]) {
90
+ ret= 1;
91
+ }else if(a<b){
92
+ ret= -1
93
+ }else{
94
+ ret= 0;
95
+ }
96
+ if(orderType=="desc"){
97
+ return ret;
98
+ }else {
99
+ return -1*ret;
100
+ }
101
+ })
102
+ }
73
103
  let total = rows.length;
74
104
  rows=JSON.parse(JSON.stringify(rows))
75
- rows = rows.splice((startPage - 1) * limit, limit)
105
+ rows = rows.splice((page - 1) * num, num)
76
106
  return {rows, total}
77
107
  }
78
108
 
package/package.json CHANGED
@@ -46,5 +46,5 @@
46
46
  "scripts": {
47
47
  "test": "echo \"Error: no test specified\" && exit 1"
48
48
  },
49
- "version": "2.9.0"
49
+ "version": "2.9.5"
50
50
  }
@@ -10,7 +10,7 @@ class AbstractBaseRest{
10
10
 
11
11
  async add(obj){}
12
12
  async delete(obj){}
13
- async list({page,num,...queryCase}){}
13
+ async list({page,num,order,...queryCase}){}
14
14
  async listAll(obj){}
15
15
  async update(obj){}
16
16
  async getChildenList(id,queryCase){}
@@ -42,9 +42,9 @@ class AbstractBaseRest{
42
42
  });
43
43
 
44
44
  app.get(`${this.prefix}/:id`,async (req,res)=>{
45
- const {id,page,num,...queryCase}=req.params;
45
+ const {id,page,num,order,...queryCase}=req.params;
46
46
  if(id==undefined){
47
- let r=await this.list({page,num,queryCase});
47
+ let r=await this.list({page,num,order,queryCase});
48
48
  res.send(M.successResult(r));
49
49
  }else {
50
50
  let r=await this.getById(req.params.id);
@@ -27,12 +27,12 @@ class ApiCloudBaseRestApi extends AbstractBaseRestApi{
27
27
  return r[0];
28
28
  }
29
29
 
30
- async list({page=1,num=10,queryCase}){
30
+ async list({page=1,num=10,order="createdAt ASC",queryCase}){
31
31
  page=Number.parseInt(page);
32
32
  num=Number.parseInt(num);
33
33
  let limit=num;
34
34
  let skip= (page-1)*num
35
- let r=await this.tableClient.list(queryCase,limit,skip,"createdAt ASC");
35
+ let r=await this.tableClient.list(queryCase,limit,skip,order);
36
36
  return r;
37
37
  }
38
38
 
@@ -29,7 +29,7 @@ class FileBaseRestApi extends AbstractBaseRestApi{
29
29
  return r;
30
30
  }
31
31
 
32
- async list({page=1,num=10,queryCase}){
32
+ async list({page=1,num=10,order,queryCase}){
33
33
  page=Number.parseInt(page);
34
34
  num=Number.parseInt(num);
35
35
  if (page <= 0) page = 1;
@@ -25,8 +25,8 @@ class MemoryBaseRestApi extends AbstractBaseRestApi{
25
25
  return r;
26
26
  }
27
27
 
28
- async list({page,num,queryCase}){
29
- let r= this.memoryDb.listByPage(page,num,queryCase);
28
+ async list({page,num,order,queryCase}){
29
+ let r= this.memoryDb.listByPage({page,num,caseObj:queryCase,order});
30
30
  return r;
31
31
  }
32
32
 
@@ -28,7 +28,7 @@ class MongoDbBaseRestApi extends AbstractBaseRestApi{
28
28
  return r;
29
29
  }
30
30
 
31
- async list({page=1,num=10,queryCase}){
31
+ async list({page=1,num=10,order,queryCase}){
32
32
  page=Number.parseInt(page);
33
33
  num=Number.parseInt(num);
34
34
  let tableName=this.tableName;
@@ -30,9 +30,9 @@ class MysqlBaseRestApi extends AbstractBaseRestApi{
30
30
  return r;
31
31
  }
32
32
 
33
- async list({page,num,queryCase}){
34
- let queryCaseStr= MysqlBaseRestApi.obj2QueryCase(queryCase);
35
- let r= this.dbBaseMapper.selectPage({page,num,queryCase:queryCaseStr});
33
+ async list({page,num,order,queryCase}){
34
+ let queryCaseStr= MysqlBaseRpcApi.obj2QueryCase(queryCase);
35
+ let r= this.dbBaseMapper.selectPage({order,page,num,queryCase:queryCaseStr});
36
36
  return r;
37
37
  }
38
38
 
@@ -11,7 +11,7 @@ class AbstractBaseRpcApi{
11
11
 
12
12
  async add(obj){}
13
13
  async delete(obj){}
14
- async list({page,num,...queryCase}){}
14
+ async list({page,num,order,...queryCase}){}
15
15
  async listAll(obj){}
16
16
  async update(obj){}
17
17
  async getChildenList(id,queryCase){}
@@ -51,10 +51,13 @@ class AbstractBaseRpcApi{
51
51
  });
52
52
 
53
53
  app.get(`${this.prefix}/list`,async (req,res)=>{
54
- const {page,num,...queryCase}=req.params;
55
- let r=await this.list({page,num,queryCase});
54
+ let {page,num,order,...queryCase}=req.params;
55
+ if(!order){
56
+ order=null;
57
+ }
58
+ let r=await this.list({page,num,order,queryCase});
56
59
  res.send(M.successResult(r));
57
- })
60
+ });
58
61
 
59
62
  /**
60
63
  * 如果有parent_id才能返回树
@@ -27,12 +27,12 @@ class ApiCloudBaseRpcApi extends AbstractBaseRpcApi{
27
27
  return r[0];
28
28
  }
29
29
 
30
- async list({page=1,num=10,queryCase}){
30
+ async list({page=1,num=10,order="createdAt ASC",queryCase}){
31
31
  page=Number.parseInt(page);
32
32
  num=Number.parseInt(num);
33
33
  let limit=num;
34
34
  let skip= (page-1)*num
35
- let rows=await this.tableClient.list(queryCase,limit,skip,"createdAt ASC");
35
+ let rows=await this.tableClient.list(queryCase,limit,skip,order);
36
36
  let countResult=await this.tableClient.count(queryCase);
37
37
  return {rows, total:countResult.count}
38
38
  }
@@ -1,59 +1,50 @@
1
1
  /**
2
2
  * 数据源为内存的rpc风格接口
3
3
  */
4
- const M=require("../../index")
4
+ const FileDb=require("../../module/FileDb");
5
5
  const AbstractBaseRpcApi=require("./AbstractBaseRpcApi");
6
6
 
7
7
  class FileBaseRpcApi extends AbstractBaseRpcApi{
8
+
8
9
  constructor(props) {
9
10
  super(props);
11
+ if(props.readFromMemory==null){
12
+ props.readFromMemory=true;
13
+ }
14
+ this.fileDb=new FileDb(props.tableName,props.readFromMemory);
10
15
  }
11
16
  async add(obj){
12
- obj.id = M.randomStr();
13
- M.addObjToFile(this.tableName, obj);
14
- return obj;
17
+ let r= this.fileDb.add(obj);
18
+ return r;
15
19
  }
16
20
 
17
21
  async delete(obj){
18
- let r=0;
19
- if (obj) {
20
- r= M.deleteObjByPropFile(this.tableName, obj);
21
- } else {
22
- r=M.writeObjToFile(this.tableName,[]);
23
- }
22
+ let r= this.fileDb.deleteAll(obj);
24
23
  return r;
25
24
  }
26
25
 
27
26
  async getById(id){
28
- let r=M.getById(this.tableName,id);
27
+ let r=this.fileDb.getById(id);
29
28
  return r;
30
29
  }
31
30
 
32
- async list({page=1,num=10,queryCase}){
33
- page=Number.parseInt(page);
34
- num=Number.parseInt(num);
35
- if (page <= 0) page = 1;
36
- let rows =await this.listAll(queryCase);
37
- let total = rows.length;
38
- rows = rows.splice((page - 1) * num, num)
39
- return {rows, total}
31
+ async list({page,num,order,queryCase}){
32
+ let r= this.fileDb.listByPage({page,num,caseObj:queryCase,order});
33
+ return r;
40
34
  }
41
35
 
42
36
  async listAll(obj){
43
- if (obj) {
44
- return M.listAllObjByPropFile(this.tableName, obj);
45
- } else {
46
- return M.getObjByFile(this.tableName);
47
- }
37
+ let r= this.fileDb.listAll(obj);
38
+ return r;
48
39
  }
49
40
 
50
41
  async update(obj){
51
- let r= M.updateObjByIdFile(this.tableName,obj);
42
+ let r= this.fileDb.update(obj);
52
43
  return r;
53
44
  }
54
45
 
55
46
  async getChildenList(id,caseObj){
56
- let r= this.listAll({parent_id:id,...caseObj});
47
+ let r= this.fileDb.listAll({parent_id:id,...caseObj});
57
48
  return r;
58
49
  }
59
50
  }
@@ -25,8 +25,8 @@ class MemoryBaseRpcApi extends AbstractBaseRpcApi{
25
25
  return r;
26
26
  }
27
27
 
28
- async list({page,num,queryCase}){
29
- let r= this.memoryDb.listByPage(page,num,queryCase);
28
+ async list({page,num,order,queryCase}){
29
+ let r= this.memoryDb.listByPage({page,num,caseObj: queryCase,order});
30
30
  return r;
31
31
  }
32
32
 
@@ -28,7 +28,7 @@ class MongoDbBaseRpcApi extends AbstractBaseRpcApi{
28
28
  return r;
29
29
  }
30
30
 
31
- async list({page=1,num=10,queryCase}){
31
+ async list({page=1,num=10,order,queryCase}){
32
32
  page=Number.parseInt(page);
33
33
  num=Number.parseInt(num);
34
34
  let tableName=this.tableName;
@@ -30,9 +30,9 @@ class MysqlBaseRpcApi extends AbstractBaseRpcApi{
30
30
  return r;
31
31
  }
32
32
 
33
- async list({page,num,queryCase}){
33
+ async list({page,num,order,queryCase}){
34
34
  let queryCaseStr= MysqlBaseRpcApi.obj2QueryCase(queryCase);
35
- let r= this.dbBaseMapper.selectPage({page,num,queryCase:queryCaseStr});
35
+ let r= this.dbBaseMapper.selectPage({order,page,num,queryCase:queryCaseStr});
36
36
  return r;
37
37
  }
38
38
 
@@ -0,0 +1,38 @@
1
+ const M = require('../../index.js');
2
+ const { spawn } = require('child_process')
3
+
4
+ let childProcess;
5
+ let timer = null;
6
+
7
+ function debounce(mainFile) {
8
+ timer && clearTimeout(timer)
9
+ timer = setTimeout(() => {
10
+ //console.log('nodemon')
11
+ childProcess && childProcess.kill()
12
+ childProcess = spawn('node', [mainFile], {
13
+ stdio: [process.stdin, process.stdout, process.stderr]
14
+ });
15
+ }, 800)
16
+ }
17
+
18
+ function watchSigleFile(file,mainFile){
19
+ M.watchFile(file,({file,event})=>{
20
+ if(event=="change"){
21
+ console.log("change:"+file);
22
+ debounce(mainFile)
23
+ }
24
+ })
25
+ }
26
+
27
+ module.exports = function (watchFile,mainFile){
28
+ debounce(mainFile);
29
+ let r=[];
30
+ if(Array.isArray(watchFile)) {
31
+ r=watchFile;
32
+ }else {
33
+ r.push(watchFile);
34
+ }
35
+ r.forEach(u=>{
36
+ watchSigleFile(u,mainFile);
37
+ })
38
+ };