2017-02-08 2 views
0

В настоящее время работает над проектом apy для узла, где я хочу получить данные для списка данных. например: у меня есть список post_id ([1,2,3 ....]) для определенного тега (mobile), и для каждого post_id я хочу получить заголовок и описание должности из базы данных mysql. Но вызов sql-запроса является синхронным.Синхронизировать вызов sql-запроса

Как управлять потоком для каждого результата сообщения, чтобы объединить в одном.

мой дб вызывающий код здесь:

var express = require('express'); 
var app  = express(); 
var bodyParser = require('body-parser'); // call body-parser 
var addData = require('./dbhandler/addData'); // call database handler to insertdata 
var getData = require('./dbhandler/getData'); 

//route function to get feeds by tags 
router.route('/postfeedsbytags/:tag') 
// get all new article feeds filtered by tag 
.get(function(req,res){ 
    var success; 
    console.log(req.params.tag) 
    var json_results = []; 
    getData.getPostFeedsByTag(req.params.tag,function(error, results, fields){ 
     if (!error){ 
      for (var i = 0; i < results.length; i++) { 
       getData.getPostFeedsByPostId(results[0]['post_id'],function(error, results, fields){ 
        if (!error){ 
         success = 1; 
         json_results.push(results[0]); 
         res.json({"success" : success, "datasets" : json_results}); 
        } else{ 
         success = 0; 
         console.log('Error while performing Query.'+error); 
         res.json({"success" : success}); 
        } 
       }); 
      } 
      // res.json({"success" : success, "datasets" : results}); 
     } else{ 
      success = 0; 
      console.log('Error while performing Query.'+error); 
      res.json({"success" : success}); 
     } 
    }); 
}); 
+0

Как вы получаете сообщение post_id? Если через sql есть какая-то причина, по которой вы не могли бы включить post_title и post_description в этот массив, то пропустите его? – Dom

+0

У меня есть таблица с именем тега карты с сообщением id – user3528954

+0

Показать свой код. Методы Node.js обычно являются асинхронными. Если я правильно собираюсь, вы хотите иметь возможность комбинировать результаты, правильно? Синхронизация или Async не вызывает беспокойства, пока вы получаете свои данные, не так ли? – Sangharsh

ответ

0

Я думаю, вы можете использовать оператор IN в запросе, чтобы получить все сообщения в одном запросе, а затем перебрать его.

Если вы не хотите использовать оператор IN, используйте библиотеку async для управления потоком. Вы можете использовать функцию async.map.

Смежные вопросы