Синхронный и асинхронный обратный вызов в мангусте - PullRequest
0 голосов
/ 27 мая 2019

Привет, ребята, я новичок в ноде и у меня простой вопрос, в чем разница между этими двумя снайперами

Примечание: я знаю функциональность async / await, а также в приложениях переднего плана, это лучшая практика для обработки асинхронных действий, но в работе с mongoose я хочу знать, какой подход лучше для ручки

первое решение

// for example we pass this function as controller to route handler

exports.myController = async (req, res, next) => {

try {
     const data = await Model.find();
     const some = await new Model(data).save();
   } catch(e) {

    next(e);
 }
}

второй раствор

exports.myController = (req, res, next) => {

 const data = Model.find((err, data_) => {

  const some = new Model(data_);
  some.save((err, result) => {
  ....
})

});

}


я хочу знать, когда у меня ошибка от мангуста, во-вторых, может выдать ошибку, как это

// in callback function 

if (err) {

throw Error();

}

но как я могу справиться с этим в async/await решении

1 Ответ

1 голос
/ 27 мая 2019

вы просто бросаете его или регистрируете в блоке catch:

try {
     const data = await Model.find();
     const some = await new Model(data).save();
   } catch(e) {
     throw e; 
     next(e);
 }

async / await работает как обещания, но без вложенных обратных вызовов, и выдает ошибку синхронно с первыми ошибками и прекращает выполнение других строк.

Исходя из вашего отредактированного примечания:Вы всегда должны идти по пути асинхронного решения в nodejs или даже для всего, что связано с javascript, это лучшее решение для компоновки и повторного использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...