Я использую этот код с экспресс-маршрутизацией и nano:
router.get('/', function (request, response) {
db.view('designdoc', 'bydate', { 'descending': true })
.then(results => {
// data manipulation of results, all blocking and fine
return results;
})
.then(results => {
nano.uuids(1)
.then(uuids => {
results.uuid = uiids['uuids'][0];
resolve(); // return ?
})
.catch(error => {
// ?
});
});
return results;
})
.then(results => { response.json(results); }) // how to have results.uuid = something from the previous then ?
.catch(error => { response.json(error); });
Я хочу добавить uuid из nano.uuid
к результатам, но не могу понять, как управлять обещанием внутри следующего then
.
Как я могу получить данные из nano.uuid
, дождаться их и добавить в results
?
1012 * редактировать *
Я переключаюсь на асинхронный подход, предложенный @ narayansharma91, и этот код решает мою проблему:
router.get('/', async function (request, response) {
const results = await db.view('designdoc', 'bydate', { 'descending': true });
var uuid = await nano.uuids(1);
results.uuid = uuid.uuids[0];
response.json(results);
}
Но я все же хотел бы понять решение, основанное на обещаниях.