Жду vs exe c в мангусте - PullRequest
       5

Жду vs exe c в мангусте

0 голосов
/ 07 января 2020

При использовании mon goose и создании пользовательского фильтра, следует ли использовать функцию exec, или ее достаточно подождать?

Таким образом, оба варианта будут воспроизводиться

const locations = await Location.find(
    {loc: $nearSphere: {
            $geometry: {
                type: 'Point',
                coordinates: coordinates
            }})
            .exec(function (err, location) {
                 location = location.filter(async function(currentLocation){
                     return // Call google maps distance api for more accuracy
                 }); 
    });

Или

let locations = await Location.find(
    {loc: $nearSphere: {
            $geometry: {
                type: 'Point',
                coordinates: coordinates
            }});

 locations = locations.filter(async function(currentLocation){
     return // Call google maps distance api for more accuracy
 }); 

1 Ответ

0 голосов
/ 07 января 2020

В вашем первом примере назначение const locations = await... является избыточным.
Это ничего не делает, потому что вы используете функцию обратного вызова в части .exec(function(err, location)), которая возвращает результат запроса.

Ваш второй пример использует метод .find(), основанный на обещании .

Оба примера действительны в mon goose. Что вы используете - обратный звонок или обещание - зависит от вас. Лично я предпочитаю подход, основанный на обещаниях, потому что он намного более читабелен, когда все становится сложнее. Обработка ошибок тоже проще.

Кроме того, вы также можете использовать синтаксис .find().then().catch(). В основном это то же самое, что и использование async/await.

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