在NodeJS / ES6方法中调用自己的方法的类

时间:2017-06-07 19:31:42

标签: javascript node.js inheritance es6-class

首先,如果已经回答,我道歉;我一直在搜索和搜索,但我找到的任何东西都没有给我Eureka!那一刻......所以我来到这里。

我对Node和ES6很新,我希望从app.js文件中抽象出一些函数/方法。这样做......我创建了一个如下所示的类。

this.tryLogin(email, password)....

始终返回undefined。

我试过了:

构造函数()var self = this中的

并将其设置为self.tryLogin()...无效

使用function UserHandler() {}....并使用原型进行实验。

我的目标是创建一个JS“类”,我可以在类中INSIDE和OUTSIDE调用它自己的方法。

    class UserHandler {

    constructor() {
        this.aws_config = require("./aws-config");
    }

    redirectIfLoggedIn(request, response, next) {

        if (request.session.user && request.session.user.id_token) {

            if (request.query.redirect) {
                response.redirect(request.query.redirect);
            }
            else {
                response.redirect("/profile");
            }
        }
        else {
            next();
        }
    }

    handleLogin(request, response, next) {
        let form_data = request.body;
        let email = request.body.email;
        let password = request.body.password;
        let remember_me = request.body.remember_me;

        this.tryLogin(email, password).then(function () {

        }).catch(function(){

        });
    }

    tryLogin(username, password) {
        return new Promise(function(resolve, reject) {

        });
    }
    // Test function
    pingPromise(string) {
        return new Promise(function(resolve , reject) {
            if (string == "ping") {
                resolve("pong");
            }
            else {
                reject(Error("You must send 'ping'!"));
            }
        });
    }
}


module.exports = new UserHandler();

修改

错误我正在尝试解决TypeError: Cannot read property 'tryLogin' of undefined

我最初通过ExpressJS调用handleLogin函数作为中间件:

app.post(default_data.login_form_action, UserHandler.handleLogin, function (request, response) {});

1 个答案:

答案 0 :(得分:0)

我认为您应该返回调用this.tryLogin()的结果:

handleLogin(request, response, next) {
    let form_data = request.body;
    let email = request.body.email;
    let password = request.body.password;
    let remember_me = request.body.remember_me;

    return this.tryLogin(email, password).then(function () {

    }).catch(function(){

    });
}