Вот отредактированные версии в соответствии с рекомендациями :) Но все еще не хватает сведений о пользователе, похоже, что promise.all не ожидает запроса "TempUser.findById (record.user)".
1 Я создал новое событие, запустил, 3 пользователя и 3 результата.
2 Затем я установил несколько журналов по вызовам БД.
3 Тогда я сделал запрос на получение с почтальоном
Журнал с localhost выглядит так после GET-запроса Postman:
$ узел приложения
Сервер запущен на 5000
Mongodb подключен
id 5aeebd8a1b5ddf1424c25194
- Получить время окончания работы с базой данных
[{создано: 2018-05-06T08: 32: 46,359Z,
_id: 5aeebdae1b5ddf1424c25199,
конечное время: 23204,
пользователь: 5aeebd751b5ddf1424c25191,
этап: 5aeebd8a1b5ddf1424c25194,
__v: 0},
{создано: 2018-05-06T08: 32: 49.414Z,
_id: 5aeebdb11b5ddf1424c2519b,
конечное время: 17149,
пользователь: 5aeebd7b1b5ddf1424c25192,
этап: 5aeebd8a1b5ddf1424c25194,
__v: 0},
{создано: 2018-05-06T08: 32: 51.769Z,
_id: 5aeebdb31b5ddf1424c2519d,
конечное время: 10840,
пользователь: 5aeebd7f1b5ddf1424c25193,
этап: 5aeebd8a1b5ddf1424c25194,
__v: 0}]
- Установить результаты для объекта
[не определено, не определено, не определено]
Это должно быть последним в цепочке?
- Получить информацию о пользователе из базы данных
{дата: 2018-05-06T08: 31: 49,673Z,
_id: 5aeebd751b5ddf1424c25191,
имя: 'Firstame Lastname1',
__v: 0}
2. Получить информацию о пользователе из базы данных {дата: 2018-05-06T08: 31: 55.562Z,
_id: 5aeebd7b1b5ddf1424c25192,
имя: 'Firstame Lastname2',
__v: 0}
2. Получить информацию о пользователе из базы данных {дата: 2018-05-06T08: 31: 59,906Z,
_id: 5aeebd7f1b5ddf1424c25193,
имя: 'Firstame Lastname3',
__v: 0}
Это делается с помощью следующего кода:
exports.runresults3 = function(req, res) {
// Route is passing ID
console.log('id', req.params.id);
// Test results object to fill
const resultsParams = {
run: [{
runid: {},
results: []
}]
}
// Each run objectid
resultsParams.run[0].runid = req.params.id;
Endtime.find({stage: req.params.id})
.then(data => {
console.log('1. Get endtimes from database', data);
return Promise.all(data.map(record => {
TempUser.findById(record.user)
.then(userdetails => {
console.log('2. Get user details from database', userdetails);
return {
endtimeid: record._id,
userid: record.user,
endtime: record.endtime,
username: userdetails.name
};
})
}))
})
.then(results => {
console.log('3. Set results to object', results);
console.log('This should be the last one at chain?');
resultsParams.run[0].results = results;
})
.then(() => res.json(resultsParams));
}