cgserver 9.2.7 → 10.0.0

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.
Files changed (91) hide show
  1. package/README.md +10 -0
  2. package/dist/lib/Framework/AI/BehaviorAI.js +6 -6
  3. package/dist/lib/Framework/AI/TriggerMgr.js +7 -8
  4. package/dist/lib/Framework/Config/FrameworkConfig.js +2 -2
  5. package/dist/lib/Framework/Config/IServerConfig.js +3 -3
  6. package/dist/lib/Framework/Core/ByteTool.js +2 -2
  7. package/dist/lib/Framework/Core/Core.js +4 -4
  8. package/dist/lib/Framework/Core/Timer.js +5 -5
  9. package/dist/lib/Framework/Database/Decorator/DBCache.js +5 -6
  10. package/dist/lib/Framework/Database/MSSqlManager.js +4 -5
  11. package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +128 -0
  12. package/dist/lib/Framework/Database/Mongo/MongoManager.js +509 -0
  13. package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +26 -0
  14. package/dist/lib/Framework/Database/MysqlBaseService.js +24 -26
  15. package/dist/lib/Framework/Database/MysqlManager.js +7 -10
  16. package/dist/lib/Framework/Database/RedisManager.js +5 -7
  17. package/dist/lib/Framework/Decorator/SyncCall.js +3 -3
  18. package/dist/lib/Framework/Decorator/SyncCallServer.js +11 -12
  19. package/dist/lib/Framework/Logic/CacheTool.js +2 -3
  20. package/dist/lib/Framework/Logic/EventTool.js +2 -2
  21. package/dist/lib/Framework/Logic/HttpTool.js +11 -12
  22. package/dist/lib/Framework/Logic/Log.js +2 -3
  23. package/dist/lib/Framework/Logic/SyncQueueTool.js +2 -2
  24. package/dist/lib/Framework/Service/MongoAccountService.js +17 -19
  25. package/dist/lib/Framework/Service/MongoCacheService.js +7 -9
  26. package/dist/lib/Framework/Service/MongoUserService.js +10 -10
  27. package/dist/lib/Framework/Service/MysqlAccountService.js +4 -6
  28. package/dist/lib/Framework/SocketServer/IClientWebSocket.js +4 -4
  29. package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +6 -7
  30. package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +6 -7
  31. package/dist/lib/Framework/SocketServer/IServerWebSocket.js +3 -3
  32. package/dist/lib/Framework/SocketServer/ISocketServer.js +18 -21
  33. package/dist/lib/Framework/SocketServer/IWebSocket.js +12 -14
  34. package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +4 -4
  35. package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +2 -2
  36. package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +2 -3
  37. package/dist/lib/Framework/ThirdParty/AlipayTool.js +17 -19
  38. package/dist/lib/Framework/ThirdParty/Alisms.js +10 -12
  39. package/dist/lib/Framework/ThirdParty/AppleTool.js +14 -17
  40. package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
  41. package/dist/lib/Framework/ThirdParty/EmailTool.js +12 -14
  42. package/dist/lib/Framework/ThirdParty/QQTool.js +19 -23
  43. package/dist/lib/Framework/ThirdParty/QiniuTool.js +9 -11
  44. package/dist/lib/Framework/ThirdParty/Rpc.js +2 -2
  45. package/dist/lib/Framework/ThirdParty/WechatTool.js +66 -16
  46. package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +16 -17
  47. package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +12 -13
  48. package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +2 -3
  49. package/dist/lib/Framework/WebServer/Engine/Engine.js +17 -18
  50. package/dist/lib/Framework/WebServer/Engine/RazorJs.js +3 -4
  51. package/dist/lib/Framework/WebServer/Engine/Request.js +3 -3
  52. package/dist/lib/Framework/WebServer/Engine/Response.js +2 -2
  53. package/dist/lib/Framework/WebServer/IWebServer.js +6 -9
  54. package/dist/lib/Framework/cgserver.js +10 -15
  55. package/dist/lib/Framework/global.js +56 -0
  56. package/dist/lib/Framework/index.js +3 -200
  57. package/dist/lib/Framework/index_export_.js +161 -0
  58. package/dist/lib/test/test.js +2 -2
  59. package/dist/types/Framework/AI/TriggerMgr.d.ts +1 -3
  60. package/dist/types/Framework/Config/DbConfig.d.ts +1 -1
  61. package/dist/types/Framework/Config/IServerConfig.d.ts +0 -1
  62. package/dist/types/Framework/Core/ByteTool.d.ts +1 -3
  63. package/dist/types/Framework/Database/Decorator/DBCache.d.ts +1 -3
  64. package/dist/types/Framework/Database/MSSqlManager.d.ts +1 -3
  65. package/dist/types/Framework/Database/Mongo/MongoBaseService.d.ts +105 -0
  66. package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +193 -0
  67. package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -0
  68. package/dist/types/Framework/Database/MysqlManager.d.ts +1 -3
  69. package/dist/types/Framework/Database/RedisManager.d.ts +0 -1
  70. package/dist/types/Framework/Logic/CacheTool.d.ts +1 -2
  71. package/dist/types/Framework/Logic/EventTool.d.ts +1 -3
  72. package/dist/types/Framework/Logic/HttpTool.d.ts +1 -3
  73. package/dist/types/Framework/Logic/Log.d.ts +1 -3
  74. package/dist/types/Framework/Logic/SyncQueueTool.d.ts +1 -2
  75. package/dist/types/Framework/Service/MongoAccountService.d.ts +2 -2
  76. package/dist/types/Framework/Service/MongoCacheService.d.ts +3 -5
  77. package/dist/types/Framework/Service/MongoUserService.d.ts +4 -4
  78. package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -2
  79. package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +1 -3
  80. package/dist/types/Framework/ThirdParty/Alisms.d.ts +1 -3
  81. package/dist/types/Framework/ThirdParty/AppleTool.d.ts +1 -2
  82. package/dist/types/Framework/ThirdParty/EmailTool.d.ts +1 -3
  83. package/dist/types/Framework/ThirdParty/QQTool.d.ts +0 -1
  84. package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +1 -3
  85. package/dist/types/Framework/ThirdParty/WechatTool.d.ts +10 -1
  86. package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +1 -3
  87. package/dist/types/Framework/cgserver.d.ts +1 -3
  88. package/dist/types/Framework/global.d.ts +53 -0
  89. package/dist/types/Framework/index.d.ts +2 -91
  90. package/dist/types/Framework/index_export_.d.ts +74 -0
  91. package/package.json +1 -1
package/README.md CHANGED
@@ -1,3 +1,13 @@
1
+ 10.0.0
2
+ 1、老项目切忌不要轻易升级
3
+ 2、老项目切忌不要轻易升级
4
+ 3、老项目切忌不要轻易升级
5
+
6
+ 1、修改引入方式
7
+ 2、修改mongo的where和property顺序
8
+
9
+ 9.2.7
10
+ 1、主要针对配置政策修改
1
11
  9.2.1
2
12
  1、增强提示
3
13
  9.2.0
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BehaviorAI = void 0;
4
- const Log_1 = require("./../Logic/Log");
5
4
  const Core_1 = require("../Core/Core");
6
5
  const _ = require("underscore");
7
6
  const TriggerMgr_1 = require("./TriggerMgr");
7
+ const global_1 = require("../global");
8
8
  class BehaviorAI {
9
9
  _obj;
10
10
  _targetObjs;
@@ -27,13 +27,13 @@ class BehaviorAI {
27
27
  this._targetObjs = [];
28
28
  }
29
29
  this._triggers = [];
30
- let code = TriggerMgr_1.GTriggerMgr.addConditionTriggerEvent(TriggerMgr_1.EConditionType.Die, this.onTriggerDie.bind(this), { code: this._obj.getCode() });
30
+ let code = global_1.global.gTriggerMgr.addConditionTriggerEvent(TriggerMgr_1.EConditionType.Die, this.onTriggerDie.bind(this), { code: this._obj.getCode() });
31
31
  this._triggers.push({ type: TriggerMgr_1.EConditionType.Die, code: code });
32
32
  }
33
33
  //启动行为树AI
34
34
  start() {
35
35
  if (!this._behavior_data) {
36
- Log_1.GLog.info("------------error------------this._behavior_data can not be null!");
36
+ global_1.global.gLog.info("------------error------------this._behavior_data can not be null!");
37
37
  return;
38
38
  }
39
39
  this.goto(this._behavior_data.start);
@@ -41,7 +41,7 @@ class BehaviorAI {
41
41
  //结束行为树AI
42
42
  end() {
43
43
  for (let i = 0, length = this._triggers.length; i < length; ++i) {
44
- TriggerMgr_1.GTriggerMgr.removeConditionTriggerEvent(this._triggers[i].type, this._triggers[i].code);
44
+ global_1.global.gTriggerMgr.removeConditionTriggerEvent(this._triggers[i].type, this._triggers[i].code);
45
45
  }
46
46
  this._triggers = [];
47
47
  }
@@ -145,7 +145,7 @@ class BehaviorAI {
145
145
  }
146
146
  }
147
147
  else {
148
- Log_1.GLog.info("---------warning--------_goto->behavior_name=" + behavior_name + ".animaiton not exist!");
148
+ global_1.global.gLog.info("---------warning--------_goto->behavior_name=" + behavior_name + ".animaiton not exist!");
149
149
  }
150
150
  }
151
151
  //检查有没有已经达到的条件,又的话就执行他的相关事件
@@ -177,7 +177,7 @@ class BehaviorAI {
177
177
  let targetInfo = this._getNearestTarget();
178
178
  if (targetInfo) {
179
179
  if (this._behavior_data.name == "sm")
180
- Log_1.GLog.info("distance" + targetInfo.distance);
180
+ global_1.global.gLog.info("distance" + targetInfo.distance);
181
181
  this._targetObj = targetInfo.target;
182
182
  }
183
183
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GTriggerMgr = exports.Trigger = exports.EConditionType = exports.ETriggerType = void 0;
4
- const Log_1 = require("./../Logic/Log");
3
+ exports.TriggerManager = exports.Trigger = exports.EConditionType = exports.ETriggerType = void 0;
5
4
  const Core_1 = require("../Core/Core");
5
+ const global_1 = require("../global");
6
6
  var ETriggerType;
7
7
  (function (ETriggerType) {
8
8
  ETriggerType[ETriggerType["Region"] = 0] = "Region";
@@ -20,7 +20,6 @@ class Trigger {
20
20
  }
21
21
  exports.Trigger = Trigger;
22
22
  let _GTriggerCode = 0;
23
- exports.GTriggerMgr = null;
24
23
  class TriggerManager {
25
24
  _regionTriggers = null;
26
25
  _conditionTriggers = {};
@@ -86,8 +85,8 @@ class TriggerManager {
86
85
  if (!pos || typeof region === "undefined") {
87
86
  return false;
88
87
  }
89
- Log_1.GLog.info("pos.x" + pos.x + " pos.y=" + pos.y);
90
- Log_1.GLog.info("region.x" + region.x + " region.y=" + region.y);
88
+ global_1.global.gLog.info("pos.x" + pos.x + " pos.y=" + pos.y);
89
+ global_1.global.gLog.info("region.x" + region.x + " region.y=" + region.y);
91
90
  if (pos.x < (region.x - region.width / 2)) {
92
91
  return false;
93
92
  }
@@ -145,7 +144,7 @@ class TriggerManager {
145
144
  if (!this._regionTriggers.aiObj || !this._regionTriggers.aiObj.onTriggerIn) {
146
145
  return;
147
146
  }
148
- Log_1.GLog.info("some one triggered in");
147
+ global_1.global.gLog.info("some one triggered in");
149
148
  this._regionTriggers.aiObj.onTriggerIn(obj, trigger);
150
149
  }
151
150
  //从里面走出去的时候触发
@@ -153,7 +152,7 @@ class TriggerManager {
153
152
  if (!this._regionTriggers.aiObj || !this._regionTriggers.aiObj.onTriggerOut) {
154
153
  return;
155
154
  }
156
- Log_1.GLog.info("some one triggered out");
155
+ global_1.global.gLog.info("some one triggered out");
157
156
  this._regionTriggers.aiObj.onTriggerOut(obj, trigger);
158
157
  }
159
158
  //////////////////////////////////////条件触发器//////////////////////////////////////////////////
@@ -198,4 +197,4 @@ class TriggerManager {
198
197
  }
199
198
  }
200
199
  }
201
- exports.GTriggerMgr = new TriggerManager();
200
+ exports.TriggerManager = TriggerManager;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FrameworkConfig = exports.WebServerConfig = exports.ESessionType = void 0;
4
- const Log_1 = require("../Logic/Log");
4
+ const global_1 = require("../global");
5
5
  const Config_1 = require("./Config");
6
6
  const DbConfig_1 = require("./DbConfig");
7
7
  var ESessionType;
@@ -186,7 +186,7 @@ class FrameworkConfig extends Config_1.Config {
186
186
  }
187
187
  init() {
188
188
  let ret = super.init();
189
- Log_1.GLog.init(this.log, this.console_level || 0);
189
+ global_1.global.gLog.init(this.log, this.console_level || 0);
190
190
  return ret;
191
191
  }
192
192
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IServerConfig = exports.GServerCfg = void 0;
3
+ exports.IServerConfig = void 0;
4
+ const global_1 = require("../global");
4
5
  const FrameworkConfig_1 = require("./FrameworkConfig");
5
- exports.GServerCfg = null;
6
6
  class IServerConfig extends FrameworkConfig_1.FrameworkConfig {
7
7
  port = -1;
8
8
  _server_name = "";
@@ -19,7 +19,7 @@ class IServerConfig extends FrameworkConfig_1.FrameworkConfig {
19
19
  if (!ret) {
20
20
  return ret;
21
21
  }
22
- exports.GServerCfg = this;
22
+ global_1.global.gServerCfg = this;
23
23
  return ret;
24
24
  }
25
25
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GByteTool = void 0;
3
+ exports.ByteTool = void 0;
4
4
  class ByteTool {
5
5
  //构建一个视图,把字节数组写到缓存中,索引从0开始
6
6
  getView(bytes) {
@@ -81,4 +81,4 @@ class ByteTool {
81
81
  return this.getUint8Array(8, (view) => { view.setFloat64(0, num, littleEndian); });
82
82
  }
83
83
  }
84
- exports.GByteTool = new ByteTool();
84
+ exports.ByteTool = ByteTool;
@@ -5,10 +5,10 @@ let os = require('os');
5
5
  let request = require('request');
6
6
  const _ = require("underscore");
7
7
  const crypto = require("crypto");
8
- const Log_1 = require("../Logic/Log");
9
8
  const CryptoJS = require("crypto-js");
10
9
  const ec_key_1 = require("ec-key");
11
10
  const uuid_1 = require("uuid");
11
+ const global_1 = require("../global");
12
12
  /**
13
13
  * 常用的工具函数类
14
14
  */
@@ -598,13 +598,13 @@ class core {
598
598
  if (core.isAsyncFunc(func)) {
599
599
  if (thisArg) {
600
600
  rs = await func.call(thisArg, ...params).catch((reason) => {
601
- Log_1.GLog.error(reason);
601
+ global_1.global.gLog.error(reason);
602
602
  rs = { errcode: { id: 1008611, des: "failed" } };
603
603
  });
604
604
  }
605
605
  else {
606
606
  rs = await func(...params).catch((reason) => {
607
- Log_1.GLog.error(reason);
607
+ global_1.global.gLog.error(reason);
608
608
  rs = { errcode: { id: 1008612, des: "failed" } };
609
609
  });
610
610
  }
@@ -620,7 +620,7 @@ class core {
620
620
  return rs;
621
621
  }
622
622
  catch (e) {
623
- Log_1.GLog.error(e.stack);
623
+ global_1.global.gLog.error(e.stack);
624
624
  return { errcode: { id: 1008613, des: "failed" } };
625
625
  }
626
626
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Timer = void 0;
4
- const Log_1 = require("../Logic/Log");
4
+ const global_1 = require("../global");
5
5
  class Timer {
6
6
  _deadline = -1;
7
7
  get deadline() {
@@ -38,10 +38,10 @@ class Timer {
38
38
  }
39
39
  catch (e) {
40
40
  if (e && e.stack) {
41
- Log_1.GLog.error(e.stack);
41
+ global_1.global.gLog.error(e.stack);
42
42
  }
43
43
  else {
44
- Log_1.GLog.error(e);
44
+ global_1.global.gLog.error(e);
45
45
  }
46
46
  }
47
47
  }, timeout, ...args);
@@ -61,10 +61,10 @@ class Timer {
61
61
  }
62
62
  catch (e) {
63
63
  if (e && e.stack) {
64
- Log_1.GLog.error(e.stack);
64
+ global_1.global.gLog.error(e.stack);
65
65
  }
66
66
  else {
67
- Log_1.GLog.error(e);
67
+ global_1.global.gLog.error(e);
68
68
  }
69
69
  }
70
70
  }, timeout, ...args);
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GDBCache = exports.VersionModel = void 0;
4
- const Log_1 = require("./../../Logic/Log");
3
+ exports.DBCache = exports.VersionModel = void 0;
5
4
  const fs = require("fs");
5
+ const global_1 = require("../../global");
6
6
  class VersionModel {
7
7
  table = "";
8
8
  version = 0;
@@ -16,19 +16,18 @@ class VersionModel {
16
16
  update_time = 0;
17
17
  }
18
18
  exports.VersionModel = VersionModel;
19
- exports.GDBCache = null;
20
19
  class DBCache {
21
20
  _versions = {};
22
21
  _path = __dirname + "/tmp_table_version.json";
23
22
  async init() {
24
- Log_1.GLog.warn("mysql auto 功能建议只使用在开发环境中,因为会导致数据丢失,数据表重建");
23
+ global_1.global.gLog.warn("mysql auto 功能建议只使用在开发环境中,因为会导致数据丢失,数据表重建");
25
24
  if (fs.existsSync(this._path)) {
26
25
  try {
27
26
  let table = fs.readFileSync(this._path);
28
27
  this._versions = JSON.parse(table.toString());
29
28
  }
30
29
  catch (e) {
31
- Log_1.GLog.info("error:" + this._path);
30
+ global_1.global.gLog.info("error:" + this._path);
32
31
  process.exit();
33
32
  }
34
33
  }
@@ -62,4 +61,4 @@ class DBCache {
62
61
  return vm.version;
63
62
  }
64
63
  }
65
- exports.GDBCache = new DBCache();
64
+ exports.DBCache = DBCache;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GMSSqlMgr = exports.MssqlReturn = exports.MSSqlConfig = void 0;
3
+ exports.MSSqlManager = exports.MssqlReturn = exports.MSSqlConfig = void 0;
4
4
  const mssql = require("mssql");
5
- const DBCache_1 = require("./Decorator/DBCache");
5
+ const global_1 = require("../global");
6
6
  class MSSqlConfig {
7
7
  open = false;
8
8
  auto = false;
@@ -20,7 +20,6 @@ class MssqlReturn {
20
20
  list = null;
21
21
  }
22
22
  exports.MssqlReturn = MssqlReturn;
23
- exports.GMSSqlMgr = null;
24
23
  class MSSqlManager {
25
24
  _init_cbs = [];
26
25
  _pool = null;
@@ -41,7 +40,7 @@ class MSSqlManager {
41
40
  this._pool = await mssql.connect(cfg);
42
41
  console.log("mssql config=" + JSON.stringify(cfg));
43
42
  //这个的初始化位置不能变,必须位于cbs前,pool后
44
- await DBCache_1.GDBCache.init();
43
+ await global_1.global.gDbCache.init();
45
44
  for (let i = 0; i < this._init_cbs.length; ++i) {
46
45
  this._init_cbs[i]();
47
46
  }
@@ -50,4 +49,4 @@ class MSSqlManager {
50
49
  this._init_cbs.push(cb);
51
50
  }
52
51
  }
53
- exports.GMSSqlMgr = new MSSqlManager();
52
+ exports.MSSqlManager = MSSqlManager;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoBaseService = void 0;
4
+ const global_1 = require("../../global");
5
+ class MongoBaseService {
6
+ _table = "";
7
+ get table() {
8
+ return this._table;
9
+ }
10
+ _inited = false;
11
+ get isInited() {
12
+ return this._inited;
13
+ }
14
+ get mongoDb() {
15
+ return global_1.global.gMongoMgr.getMongo(this._dbname);
16
+ }
17
+ _dbname = "";
18
+ get dbname() {
19
+ if (!this._dbname) {
20
+ this._dbname = global_1.global.gMongoMgr.defdbname;
21
+ }
22
+ return this._dbname;
23
+ }
24
+ _t_type = null;
25
+ constructor(table, type, dbname = "") {
26
+ this._t_type = type;
27
+ this._table = table;
28
+ this._dbname = dbname;
29
+ }
30
+ async getNextId(key = "") {
31
+ if (!key) {
32
+ key = this._table;
33
+ }
34
+ let id = await this.mongoDb.getAutoIds(this._table);
35
+ return id;
36
+ }
37
+ toObjectId(id) {
38
+ return this.mongoDb.toObjectId(id);
39
+ }
40
+ /**
41
+ * 没有id(非_id)的表不能使用该函数
42
+ * @param id
43
+ */
44
+ async getById(id) {
45
+ let rs = await this.mongoDb.findOne(this._table, null, { id: id });
46
+ return rs.one;
47
+ }
48
+ async get(where = null, property = null) {
49
+ let rs = await this.mongoDb.findOne(this._table, where, property);
50
+ return rs.one;
51
+ }
52
+ async countDocuments(where = null, options) {
53
+ let rs = await this.mongoDb.countDocuments(this._table, where);
54
+ return rs.count;
55
+ }
56
+ async gets(where = null, property = null, sort = null, skip = 0, limit = 0) {
57
+ let rs = await this.mongoDb.findMany(this._table, where, property, sort, skip, limit);
58
+ return rs.list;
59
+ }
60
+ async getRandoms(num, where, property = null) {
61
+ let rs = await this.mongoDb.simpleAggregate(this._table, where, property, null, num);
62
+ return rs.list;
63
+ }
64
+ async updateOne(where, model, upsert = false) {
65
+ let rs = await this.mongoDb.updateOne(this._table, where, model, upsert);
66
+ return rs;
67
+ }
68
+ async updateMany(where, model = null, upsert = false) {
69
+ let rs = await this.mongoDb.updateMany(this._table, where, model, upsert);
70
+ return rs;
71
+ }
72
+ async insert(model) {
73
+ let rs = await this.mongoDb.insertOne(this._table, model);
74
+ return rs;
75
+ }
76
+ async deleteOne(where) {
77
+ let rs = await this.mongoDb.deleteOne(this._table, where);
78
+ return rs;
79
+ }
80
+ async deleteMany(where) {
81
+ let rs = await this.mongoDb.deleteMany(this._table, where);
82
+ return rs;
83
+ }
84
+ async createIndex(index, options) {
85
+ let rs = await this.mongoDb.createIndex(this._table, index, options);
86
+ return rs;
87
+ }
88
+ aggregate(pipeline, options) {
89
+ let ret = this.mongoDb.aggregate(this._table, pipeline, options);
90
+ return ret;
91
+ }
92
+ /**
93
+ * 仅仅支持一级
94
+ * @param array 数据名称 比如 items
95
+ * @param where 数组内赛选条件 比如 "items.id":1
96
+ * @param pre_match 数组上一级赛选条件 比如 "user_id":1
97
+ */
98
+ async getsInArray(array, where, pre_match) {
99
+ let agg = this.aggregate();
100
+ if (pre_match) {
101
+ agg = agg.match(pre_match);
102
+ }
103
+ agg = agg.unwind("$" + array);
104
+ if (where) {
105
+ agg = agg.match(where);
106
+ }
107
+ let all = await agg.toArray();
108
+ let items = [];
109
+ for (let i = 0; i < all.length; ++i) {
110
+ items.push(all[i][array]);
111
+ }
112
+ return items;
113
+ }
114
+ /**
115
+ * 仅仅支持一级
116
+ * @param array 数据名称 比如 items
117
+ * @param where 数组内赛选条件 比如 "items.id":1
118
+ * @param pre_match 数组上一级赛选条件 比如 "user_id":1
119
+ */
120
+ async getInArray(array, where, pre_match) {
121
+ let items = await this.getsInArray(array, where, pre_match);
122
+ if (items.length <= 0) {
123
+ return null;
124
+ }
125
+ return items[0];
126
+ }
127
+ }
128
+ exports.MongoBaseService = MongoBaseService;