Я пишу вызов API, который использует асинхронную Promise с Express и Bluebird.
У меня есть следующий код:
router.get('/', (req, res) => {
log.debug('api - v2 - Koko Version api call');
if (req.query.prop) {
serverStatus.transform(req).then((data) => {
switch (req.query.prop) {
case 'KokoVersion': {
return res.status(200).json({KokoVersion: data.version});
}
case 'KokoType': {
return res.status(200).json({KokoType: data.deviceType});
}
case 'LastChangeTime': {
return res.status(200).json({LastChangeTime: data.lastApply});
}
}
}).catch((error) => {
log.debug('Failed returning from Promise.resolve - v2 properties API');
});
}
return res.status(500).json({status: 'ERROR', message: 'Internal Server error'});
});
метод transform возвращает новый Promise (), который генерирует данные, использованные в вызове then (), показанном выше (в 4-й строке), однако я не могу вернуть ответ с полями, созданными из данных выше. Итак, мой вопрос - как мне ответить на вызов API, когда оценка этого вызова должна пройти через поток Обещание -> разрешить -> затем?