Я немного растерялся после прочтения документации о том, могу ли я выполнить запрос мангуста в дескрипторе обещания.В этом случае я пытаюсь перебрать массив объектов в portfolio.coin, а затем посмотреть их текущие цены в другой модели.Есть лучший способ сделать это?Следующий код работает, но я получаю предупреждения Unhandledpromiserejection и документ notfound error.
// @route: GET api/portfolio/
// @description: Get the latest portfolio with price changes
// @access: Private
router.get('/', passport.authenticate('jwt',
{ session: false }), (req, res) => {
Portfolio.findOne({
user: req.user.id
}).then(portfolio => {
if (portfolio) {
// Loop over all the coins in the portfolio
portfolio.coin.forEach((item, index) => {
// In scope object
let details = {
_id: item._id,
exchange: item.exchange,
currencyname: item.currencyname,
currencyquantity: item.currencyquantity,
currencypaidwith: item.currencypaidwith,
pricepaid: item.pricepaid,
currentprice: 0,
pricedifference: 0
};
// For each coin find the market prices
Market.findOne({
exchange: item.exchange,
coin_one: item.currencyname,
coin_two: item.currencypaidwith
}).then(result => {
if (result) {
// details
details.currentprice = result.price;
details.pricedifference = result.price; // TODO: percentage
portfolio.coin[index] = details;
if (portfolio.coin.length >= index) {
portfolio.save().then(portfolio => res.json(portfolio)).catch(err => res.status(404).json({ nodoc: "somethin went wrong" }));
}
}
}).catch(err => res.status(404).json({ nodoc: "could not find a doc" }))
});
}
})
})