首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类在方法NodeJS/ES6中调用自己的方法。

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

Stack Overflow用户
提问于 2017-06-07 19:31:42
回答 1查看 1.1K关注 0票数 0

首先,如果这件事已经被回答了,我很抱歉;我一直在寻找,但是我没有发现任何东西给了我尤里卡!moment...so我来这里。

我对Node和ES6很陌生,并希望从app.js文件中抽象出我的一些函数/方法。这样做.我创建了一个类似于下面的类。

代码语言:javascript
复制
this.tryLogin(email, password)....

总是返回未定义的。

我试过:

在构造函数()var self = this中,并将其设置为self.tryLogin()...无效

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

我的目标是创建一个JS“类”,在这个类中,我能够在类内外调用它自己的方法。

代码语言:javascript
复制
    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错误

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

代码语言:javascript
复制
app.post(default_data.login_form_action, UserHandler.handleLogin, function (request, response) {});
EN

回答 1

Stack Overflow用户

发布于 2017-06-07 19:35:00

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

代码语言:javascript
复制
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(){

    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44421331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档