Zunächst entschuldige ich mich, wenn dies bereits beantwortet wurde; Ich habe gesucht und gesucht, aber nichts, was ich gefunden habe, hat mir Eureka! Moment ... also ich komme hierher.Klasse Aufruf eigene Methode innerhalb der Methode NodeJS/ES6
Ich bin neu zu Node und ES6 und versuche, einige meiner Funktionen/Methoden aus meiner app.js Datei zu abstrahieren. Tun Sie dies ... Ich habe eine Klasse wie die unten erstellt.
this.tryLogin(email, password)....
Gibt immer undefined zurück.
Ich habe versucht:
in Konstruktor() var self = this
und setzen Sie ihn auf self.tryLogin()...
ohne Erfolg
experimentierten mit function UserHandler() {}....
und unter Verwendung von Prototypen.
Mein Ziel ist es, eine JS "Klasse" zu erstellen, in der ich die Möglichkeit habe, innerhalb und außerhalb der Klasse eigene Methoden aufzurufen.
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();
EDIT:
Fehler I TypeError: Cannot read property 'tryLogin' of undefined
zu lösen versuche ich zunächst nenne die handleLogin Funktion über Express.js als Middleware:
app.post(default_data.login_form_action, UserHandler.handleLogin, function (request, response) {});
Das sieht gut aus. Was genau funktioniert mit * diesem * Code nicht, welchen Fehler bekommst du? Wie/wo * nennst du die Methoden von außen? – Bergi
Hey @Bergi, also hier ist der Fehler, den ich bekomme 'TypeError: Kann Eigenschaft 'tryLogin' von undefined nicht lesen. In meiner app.js rufe ich die Funktion so (mit expressJS) app.post (default_data.login_form_action, UserHandler.handleLogin, Funktion (Anfrage, Antwort) {); – Ray
Ja, wie vermutet. Es geht nicht darum, wie Sie 'tryLogin' aufrufen, es geht um den Aufruf von' handleLogin'. Sie müssen es an Ihre Benutzerhandler-Instanz binden. 'app.post (default_data.login_form_action, (req, res, next) => myUserHandler.handleLogin (req, res, next), funktion (request, response) {' – Bergi