다음 Sails.js 컨트롤러가 있다면 processLogin
메서드를 processRegistration
메서드에서 어떻게 호출 할 수 있습니까?동일한 컨트롤러의 다른 기능에서 Sails.js 컨트롤러의 기능을 호출하려면 어떻게해야합니까?
현재이 결과는 온라인으로 ReferenceError: AuthController is not defined
(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
을 사용 중입니다.
나는 (내 대답을 참조) 나는 그것을 가지고 생각 module.exports.processLogin – aembke
시도를 노출합니다. 그것도 비록 작동합니다. 감사! – blah238
문제 없습니다. 호이 스팅은 익숙해 져야합니다. 언뜻보기에는 아직 완전히 인스턴스화되지 않은 외부 변수를 참조 할 수 있다고 생각하는 것이 이상합니다. – aembke