@less-is-more/less-js 1.4.5 → 1.4.6
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/package.json +1 -1
- package/src/router.js +9 -5
- package/test/test-router.js +26 -0
package/package.json
CHANGED
package/src/router.js
CHANGED
|
@@ -10,7 +10,7 @@ module.exports = class Router {
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* 根据request路由
|
|
13
|
-
* @param {object} targets 路由表。支持before和after
|
|
13
|
+
* @param {object} targets 路由表。支持before和after,如果提供了会在执行主方法前后执行。需要async的方法。并且before返回值为Ret,如果不为true,会直接返回
|
|
14
14
|
* @param {*} req 请求
|
|
15
15
|
* @param {*} res 响应
|
|
16
16
|
* @param {*} context 系统属性
|
|
@@ -32,7 +32,11 @@ module.exports = class Router {
|
|
|
32
32
|
// before
|
|
33
33
|
if (targets.before) {
|
|
34
34
|
console.log("start before action");
|
|
35
|
-
await targets.before(req, res, context);
|
|
35
|
+
const beforeResult = await targets.before(req, res, context);
|
|
36
|
+
if (beforeResult && !beforeResult.success) {
|
|
37
|
+
this._handleReturn(beforeResult, startTime, req, res);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
36
40
|
}
|
|
37
41
|
console.log("start main action");
|
|
38
42
|
// 需要直接调用,不能用中间变量
|
|
@@ -42,9 +46,8 @@ module.exports = class Router {
|
|
|
42
46
|
console.log("start after action");
|
|
43
47
|
await targets.after(req, res, context);
|
|
44
48
|
}
|
|
45
|
-
const useTime = (new Date().getTime() - startTime) / 1000;
|
|
46
49
|
// controller方法有返回值的自动send
|
|
47
|
-
this._handleReturn(result,
|
|
50
|
+
this._handleReturn(result, startTime, req, res);
|
|
48
51
|
} catch (e) {
|
|
49
52
|
console.log(e);
|
|
50
53
|
return this._sendError(e.message ? e.message : "出错啦", res);
|
|
@@ -128,7 +131,8 @@ module.exports = class Router {
|
|
|
128
131
|
});
|
|
129
132
|
}
|
|
130
133
|
|
|
131
|
-
static _handleReturn(result,
|
|
134
|
+
static _handleReturn(result, startTime, req, res) {
|
|
135
|
+
const useTime = (new Date().getTime() - startTime) / 1000;
|
|
132
136
|
if (!Param.isBlank(result)) {
|
|
133
137
|
let content;
|
|
134
138
|
if (result instanceof Ret) {
|
package/test/test-router.js
CHANGED
|
@@ -212,4 +212,30 @@ describe("router.js", () => {
|
|
|
212
212
|
};
|
|
213
213
|
await Router.route(targets, req, res);
|
|
214
214
|
});
|
|
215
|
+
|
|
216
|
+
it("before return false", async () => {
|
|
217
|
+
let targets = {
|
|
218
|
+
before: async () => {
|
|
219
|
+
return new Ret(false, "错误", Ret.CODE_LOGIC);
|
|
220
|
+
},
|
|
221
|
+
"/product": {
|
|
222
|
+
add: function (req, res) {
|
|
223
|
+
assert(req.params.a === 1);
|
|
224
|
+
return 1;
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
let req = {
|
|
229
|
+
method: "GET",
|
|
230
|
+
path: "/product/add",
|
|
231
|
+
query: { a: 1 },
|
|
232
|
+
headers: {},
|
|
233
|
+
};
|
|
234
|
+
let res = {
|
|
235
|
+
send: function (data) {
|
|
236
|
+
console.log("send: " + data);
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
await Router.route(targets, req, res);
|
|
240
|
+
});
|
|
215
241
|
});
|