У меня есть следующий код, и я пытаюсь получить некоторые данные из базы данных (которая кажется успешной, я попытался ее зарегистрировать), затем упорядочить эти данные и отправить массив в ответ.Мой класс:
export class Controller {
currentQuestions: IQuestionArranged[] = []; // This should be my array that I am trying to send as response
constructor(){ }
public async startNewGame(req: express.Request, res: express.Response): Promise<void> {
let factory: RepositoryFactory = new RepositoryFactory();
let repository: RepositoryInterface = factory.createRepository();
let questionsFetched: IQuestionFetched[] = await repository.fetchQuestions(); // array of questions as they were fetched
// let currentQuestions: IQuestionArranged[] = []; // <<<<<
// forEach through fetched questions to arrange them
questionsFetched.forEach(currentQuestion => {
// check if the current question already exists in the array
if (this.currentQuestions.filter(e => e.id == currentQuestion.questionId).length != 0) {
// if yes -> find the question and add the new answer with its id
this.currentQuestions
.filter(e => e.id == currentQuestion.questionId)
.map(e => e.answers.push({
id: currentQuestion.answerId,
answer: currentQuestion.answer
}));
} else {
// if no -> add the new question with the new answer
this.currentQuestions.push({
id: currentQuestion.questionId,
question: currentQuestion.question,
answers: [{
id: currentQuestion.answerId,
answer: currentQuestion.answer
}]
});
}
});
res.send(this.currentQuestions);
}
}
Но я получил эту ошибку, которая говорит "UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство currentQuestions of undefined" (полное описание ошибки здесь ).Кажется, это работает нормально, если я использую локальную переменную (помеченную 5 стрелками влево в качестве комментария) вместо свойства класса, что заставляет меня думать, что я не использую ее должным образом, но я не знаю, где моя ошибка...