javascript - 你好,我不明白为什么下面的 this 指向全局对象,我以为它会指向用户
问题描述
我无法弄清楚为什么下面代码中的这个关键字指向全局对象,因为我在 .then 中使用了箭头函数。我认为它会指向用户对象:
以下功能在我的用户控制器中:
exports.register = function(req, res) {
let user = new User(req.body)
user.register().then(()=> {
//this is pointing to global object not user object
console.log(this)
req.session.user ={username: user.data.username}
req.session.save(()=>res.redirect('/'))
})
.catch((regErrors)=>{
console.log(regErrors)
regErrors.forEach((e)=>{
req.flash('regErrors',e)
})
req.session.save(()=>res.redirect('/'))
})
}
注册方法代码:
User.prototype.register = function(){
return new Promise(async (resolve,reject) =>{
// Validate user data
this.cleanUp()
await this.validate()
// save the user data into a database if errors array is empty
if (!this.errors.length) {
// hash user password
let salt = bcrypt.genSaltSync(10)
this.data.password = bcrypt.hashSync(this.data.password, salt)
usersCollection.insertOne(this.data)
resolve()
}
else {
reject(this.errors)
}
})
解决方案
推荐阅读
- java - 使用消费者显示作业列表
- reactjs - 道具未被识别
- transactions - 如何在 Global Payments API 中查询过去的付款
- python - NoSuchElementException:无论我使用哪个选择器(xpath、css_selector、fullXpath 等),Selenium 都无法找到搜索栏
- reactjs - 映射数组中的元素并在段落中显示它们
- google-sheets - 如何在公式中从零排序?
- flutter - Flutter 预览图标在代码完成时显示损坏的资产图像
- scala - 根据更改的列的值减少火花数据帧
- centos7 - Nagios LogServer 安装总是失败并出现 ImportError: No module named typing
- jupyter-notebook - 使用pytorch的jupyter中的CUDA内存不足