gpt4 book ai didi

javascript - 如何从同一 Controller 的另一个函数调用 Sails.js Controller 的函数?

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:41 25 4
gpt4 key购买 nike

给定以下 Sails.js Controller ,我如何调用它的 processLogin来自其 processRegistration 的方法方法?

目前这会导致 ReferenceError: AuthController is not defined在第 56 行(AuthController.processLogin(req, res);)。

如果我把它改成this.processLogin(req, res);我得到一个TypeError: Object #<Object> has no method 'processLogin' .

同样,如果我将其更改为 processLogin(req, res);我得到 ReferenceError: processLogin is not defined .

/**
* AuthController.js
*
* @description ::
* @docs :: http://sailsjs.org/#!documentation/controllers
*/

var passport = require('passport');

module.exports = {
login: function (req, res) {
res.view('auth/login');
},

processLogin: function (req, res) {
passport.authenticate('local', function (err, user, info) {
if ((err) || (!user)) {
res.redirect('/login');
return;
}
req.logIn(user, function (err) {
if (err) res.redirect('/login');
console.log(user);
console.log('user ' + user.username + ' logged in');
return res.redirect('/user');
});
})(req, res);
},

logout: function (req, res) {
var username = req.user.username;
req.logout();
console.log('user ' + username + ' logged out');
res.redirect('/login');
},

register: function(req,res) {
res.view('auth/register');
},

processRegistration: function(req, res) {
var userObj = {
username: req.param('username'),
password: req.param('password')
};

User.create(userObj, function(err, user) {
if (err) {
console.log(err);
return res.redirect('/register');
}

console.log('user ' + user.username + ' registered');

// Log user in
AuthController.processLogin(req, res); // ReferenceError here

});
},

_config: {}
};

我正在使用 Sails.js 0.10.0-rc5 .

最佳答案

重构稍微修复了它:

/**
* AuthController.js
*
* @description ::
* @docs :: http://sailsjs.org/#!documentation/controllers
*/

var passport = require('passport');

var AuthController = {
login: function(req, res) {
res.view('auth/login');
},

processLogin: function(req, res) {
passport.authenticate('local', function(err, user, info) {
if ((err) || (!user)) {
res.redirect('/login');
return;
}
req.logIn(user, function(err) {
if (err) res.redirect('/login');
console.log('user ' + user.username + ' logged in');
return res.redirect('/user');
});
})(req, res);
},

logout: function(req, res) {
var username = req.user.username;
req.logout();
console.log('user ' + username + ' logged out');
res.redirect('/login');
},

register: function(req, res) {
res.view('auth/register');
},

processRegistration: function(req, res) {
var userObj = {
username: req.param('username'),
password: req.param('password')
};

User.create(userObj, function(err, user) {
if (err) {
console.log(err);
return res.redirect('/register');
}

console.log('user ' + user.username + ' registered');

// Log user in
AuthController.processLogin(req, res);

});
}
};

module.exports = AuthController;

我以前试过这个,但是没有得到正确的 module.exports 行(做了类似 module.exports = { AuthController: AuthController }; 的事情,这也没有用)。

关于javascript - 如何从同一 Controller 的另一个函数调用 Sails.js Controller 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com