【发布时间】:2019-03-06 04:52:34
【问题描述】:
我有一段类似下面的代码。
// controller.js
class Controller {
static easyPost = _post(EasyAuth, EasyValidate, EasyHandle);
static hardPost = _post(HardAuth, HardValidate, HardHandle);
static _post(auth, validate, handle) {
return (req) => {
if (auth(req) && validate(req))
handle(req);
}
}
}
module.exports = Controller;
//controllermapper.js
const Controller = require("./controller");
class ControllerMapper {
static map(req) {
switch (req.path) {
case "/easyPost":
Controller.easyPost(req);
break;
case "/hardPost":
Controller.hardPost(req);
break;
}
}
}
背后的想法是我可以通过柯里化创建easyPost和hardPost。因为它们的总体流程非常相似。
但是,当我尝试将代码推送到 Google Cloud Function 时。它会引发类似
的错误> Detailed stack trace: /user_code/controller.js:6
> static easyPost = _post(EasyAuth, EasyValidate, EasyHandle);
> ^
>
> SyntaxError: Unexpected token =
我应该怎么做才能解决这个问题?
编辑
我把代码改成了
// controller.js
class Controller {
static easyPost(req) {
Controller._post(EasyAuth, EasyValidate, EasyHandle)(req);
}
static hardPost(req) {
Controller._post(HardAuth, HardValidate, HardHandle)(req);
}
static _post(auth, validate, handle) {
return (req) => {
if (auth(req) && validate(req))
handle(req);
}
}
}
如果这是一个好的做法,可以对此发表任何评论吗?
【问题讨论】:
-
这是一个语法错误。您不能在这样的类中分配变量。你确定这门课是你想要的吗?
-
如果没有,我应该使用什么。我来自 Java 背景,我只想要一些
public static方法,如果这有意义的话。
标签: javascript class google-cloud-platform google-cloud-functions currying