这是我的模块:
module.exports = {
name: '',
email: '',
id: '',
provider: '',
logged_in: false,
isLoggedIn: function(req, res, next){
console.log(this);
}
};
我这样导入:
var user = require('user');
当我将isLoggedIn
函数用作Express的中间函数时,控制台将记录全局Node对象。如何获取记录功能所在的对象的信息?
编辑
所以我有我上面定义的用户对象。根据各种因素,此对象将填充到程序的其他位置。我用来创建一个中间件函数来表示要快速测试用户的登录状态。放置此函数的明显位置似乎在用户对象中,但是我需要访问logging_in属性以对其进行正确评估。因此使用this.logged_in。
当您将其作为中间函数传递时,我相信您正在做类似
func(.., user.isLoggedIn, ..)
当您这样做时,实际上是isLoggedIn
在与user
对象分离。因此,默认情况下,如果不在严格模式下,this
将引用全局对象。要解决此问题,您应该bind
像这样使用函数
func(.., user.isLoggedIn.bind(user), ..)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句