Теперь, когда я вижу, вы используете promise-join
, а не Bluebirds Promise.join
, что делает ваш код почти тривиальным
const join = require('promise-join');
function getIncident(req, res) {
getIncidentRow(req).then(dbResult => {
var incident_id = dbResult.id;
const getItem = suffix => req.oracleMobile.storage.getById(registry.getIncidentPhotoStorageName(), incident_id + suffix, { sync: true })
.then(result => {
let base64data = result.result;
base64data = JSON.parse(base64data);
return base64data.image;
// or just ... return JSON.parse(result.result).image;
});
return join({
photo: getItem('_01'),
photo2: getItem('_02'),
photo3: getItem('_03')
})
.then(({result, errors}) => {
Object.assign(dbResult, result);
res.status(200).send(dbResult);
});
});
}
обещание объединения обрабатывает ошибки, поэтому в .then({result, errors}) => {
получает два объекта
result === {
photo: /* resolved value of getItem('_01') */
photo2: /* resolved value of getItem('_02') */
photo3: /* resolved value of getItem('_03') */
}
и
errors === {
photo: /* rejected value of getItem('_01') */
photo2: /* rejected value of getItem('_02') */
photo3: /* rejected value of getItem('_03') */
}
, т. Е. Если разрешить photo
, в результате будет свойство photo
, но не с ошибками и т. Д. Для photo2 и photo3
Теперь, поскольку ваш исходный код просто игнорировал любые отклонения фотографий, это прекрасно
Object.assign(dbResult, result)
Это все, что вам нужно, чтобы назначить любые разрешенные фотографии для dbResult