2015-10-09 5 views
1

Мое приложение должно вернуть ответ JSON после некоторых запросов БД.Возвращение асинхронного ответа в sails.js

псевдокод (с помощью async):

async.forEachOf(sails.config.site.regions, function (regionData, slug) { 
     obj['regions'][slug] = { 
      'slug': slug, 
      'name': regionData.name, 
     }; 
    }, function (err) { 
     if (err) { 
      res.json({ 
       'error': true, 
       'message': 'Error when retrieving data from the DB' 
      }); 
     } 
     else { 
      res.json(obj); 
      return; 
     } 
    }); 

Sails висит так никакого ответа, кажется, вернулся из службы.

Я попытался преобразовать это в Promise (см. this answer), но он тоже не работает.

Как я могу это сделать?

+0

делает работу службы, если вы получаете доступ с помощью инструмента, как почтальон? - https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=ru –

+1

Возможно, это просто ваш псевдокод, но [вы используете 'async.forEachOf' неправильно] (https://github.com/caolan/асинхронной # forEachOf). Второй аргумент (функция, вызываемая для каждого элемента в массиве) нуждается в обратном вызове, который вы вызываете внутри функции, чтобы продолжить цикл. Вы должны просто опубликовать свой реальный код; псевдокод здесь не очень помогает. – sgress454

ответ

1

Вы пробовали

async.forEachOf(sails.config.site.regions, function (regionData, slug) { 
     obj['regions'][slug] = { 
      'slug': slug, 
      'name': regionData.name, 
     }; 
    }, function (err) { 
     if (err) { 
      return res.json({ 
       'error': true, 
       'message': 'Error when retrieving data from the DB' 
      }); 
     } 
     else { 
      return res.json(obj); 

     } 
    }); 
+0

Да, он все еще висит. – amyspark