subject
в user.subjects = subjects
ниже - это undefined
вместо массива субъектов.
Предыстория: у меня есть три таблицы - пользователи, субъекты и отношения между пользователями и субъектами, называемые users_subjects.
Моя цель состоит в том, чтобы окончательный результат включал в себя массив имен субъектов.
Для этого мне нужно три асинхронных вызова.
- Получить пользователей из таблица пользователей
- Получить темы для каждого пользователя из таблицы, представляющей отношения между пользователями и субъектами (users_subjects)
- Получить имя для каждого идентификатора субъекта из таблицы субъектов
Моя задача состоит в том, чтобы ввести идентификатор субъекта и получить имя. верхняя половина addSubjects - это моя попытка решить эту проблему, хотя и безуспешно:
//for every user take its id
//run its id with tutors-subjects to get all subject id with that user id
//for each subject id get is subject name through with subjects service
//add subjects key
//add each subject to an array
const addSubject = (knexInstance, users, res) => {
let resultsName = []
function testIt(subjectsArray) {
// let resultsName = []
Promise.all(
subjectsArray.map((id) =>
SubjectsServes.getById(knexInstance, id)
.then(subjectNameObject => {
console.log(subjectNameObject)
resultsName.push(subjectNameObject.subject_name)
})
.catch(err => {
//console.log(err)
})
)).then(() => {
return resultsName
})
}
let results = []
Promise.all(
users.map((user) =>
TutorsSubjectsService.getAllSubjectsForATutor(knexInstance, user.user_id)
.then(subjectsIdArray => {
return testIt(subjectsIdArray)
})
.then(sub => {
user.subjects = sub
results.push(user)
})
.catch(err => {
//console.log(err)
})
)).then(() => {
return res.json(results)
})
.catch(err => {
//console.log(err)
})
}
Следующий код - это то место, где он начинается - он вызывает вышеуказанную функцию:
.get((req, res, next) => {
const knexInstance = req.app.get('db');
UsersService.getAllUsers(knexInstance)
.then(Users => {
return addSubject(knexInstance, Users, res)
})
.catch(next)
Единственная проблема, с которой я столкнулся, связана с функцией testIt. Все до этого момента работает нормально. Они здесь только для контекста.
Мой вопрос в том, как мне получить правильные имена субъектов из testIt
?
(возврат в testIt
last then
не помогает ; вся функция testI просто возвращает undefined
как сказано в заголовке)