我在这里使用Node,以下函数被用作控制器动作。我正在使用Mongoose访问模型并且在Game.findById()的范围内,我无法访问它上面的任何变量,即this.player和this.gameId。
有谁知道我做错了什么?请注意,我想访问console.log()语句所在的变量,但我无法访问它。 this.player返回undefined。在此先感谢您的帮助。
exports.cleanup = function(req, res) {
this.player = req.body;
this.gameId = req.url.split('/')[2];
debugger;
Game.findById(this.gameId, function(err, game) {
if (err) return err;
console.log(this.player);
});
};
答案 0 :(得分:0)
this
指的是两个函数内部的不同内容,每个函数都有自己的范围和自己的this
(尽管在某些情况下this
可能未定义,请参阅一对以下参考文献)。
您想要的是以下内容 - 请注意self
变量。
exports.cleanup = function(req, res) {
this.player = req.body;
this.gameId = req.url.split('/')[2];
var self=this;
debugger;
Game.findById(this.gameId, function(err, game) {
if (err) return err;
console.log(self.player);
});
};
可能有助于理解this
的一些资源: