nukosuke / loq

[WIP] オレオレブログエンジン
MIT License
0 stars 2 forks source link

UserControllerのインスタンスメソッドでthisがundefinedになる #45

Closed nukosuke closed 8 years ago

nukosuke commented 8 years ago

次の時、authenicateメソッド内のthisがなぜかundefinedになる。

  // user-controller.js
  // class UserController
  constructor(opts) {
    super(opts);
  }

  authenticate(req, res, next) {
    this.opts.passport.authenticate('local', function(err, user, info) {
      ...
    }
  }

  // server/index.js
  var passport = require('passport');
  new UserController({ passport: passport }); //<= opts

expressのsetメソッドでサーバにpassportを突っ込んで以下のように対処しているが、あまりよろしくない。

  authenticate(req, res, next) {
    req.app.get('passport').authenticate('local', function(err, user, info) {
      ...
    }
  }

コンストラクタが呼ばれないとそもそもauthenticateメソッドは呼べないので、順序的には問題ないと思うんだが、う〜ん...

nukosuke commented 8 years ago

thisをbindする必要があるらしい http://qiita.com/massa142/items/16d51b32c12542476b91