我在调用异步函数(在数据库中搜索)的方法中访问"this“时遇到了问题。
在我的"getAll“方法中:我可以在"PersonModel.find”之外访问this._persons,但是在"PersonModel.find“的回调中我不能访问this._persons。
我已经尝试添加"PersonModel.find.bind(this)",但结果是相同的……
var PersonModel = require('./model')
//Class
class personRepository {
constructor() {
this._persons = new Set();
}
getAll( cb ) {
let results = new Set();
PersonModel.find({}, 'firstName lastName', function (err, people) {
if (err) {
console.error(err);
return next(err)
}
people.forEach((person, index) => {
results.add(person);
});
//this._persons.add("this._persons isn't accessible");
//cb(this._persons);
});
this._persons.add("this._persons is accessible");
console.log(this);
}
}
// Test
var personRepo = new PersonRepository();
personRepo.getAll( (persons) => {
for (let item of persons) console.log(item);
});
如何在我的PersonModel.find函数中访问this._persons?(或者我需要重新设计我的代码?
发布于 2018-05-28 20:16:43
使用=>
函数
getAll( cb ) {
let results = new Set();
PersonModel.find({}, 'firstName lastName', (err, people) => {
if (err) {
console.error(err);
return next(err)
}
people.forEach((person, index) => {
results.add(person);
});
this._persons = results;
cb(this._persons);
});
}
https://stackoverflow.com/questions/50565392
复制相似问题