2016-08-11 2 views
0

mysql db에서 데이터를 가져오고 내 ejs 파일에서 렌더링 할 데이터를 보내야합니다.ejs 노드에서 렌더링 할 쿼리 데이터 반환 js

router.get('/', function(req, res, next) { 
    res.render('index', { speedAccelData: getSpeedAccelData() }); 
}); 

module.exports = router; 

다음은 데이터베이스에서 데이터를 가져 오는 데 사용한 기능입니다. 필요한 데이터와 함께 jsonStr을 성공적으로 인쇄합니다. 함수에서 jsonStr을 반환해야합니다.

var getSpeedAccelData = function() { 

    var jsonStr; 

    var con = mysql.createConnection({ 
    host: "localhost", 
    user: "root", 
    password: "root", 
    database: "db_name" 
    }); 

    con.connect(function(err){ 
    if(err){ 
     console.log('Error connecting to Db'); 
     return; 
    } 
    }); 

    con.query('SELECT * FROM table_name',function(err, result){ 
    if(err) throw err; 
    jsonStr = JSON.stringify(result) 
    console.log(jsonStr); 
    }); 
    con.end(); 

}};

어떻게 렌더링 할 쿼리 데이터를 반환 할 수 있습니까?

+0

는 비동기 **,이 같은 값을 ** 반환 할 수 있어요 . 하나의 해결책은'getSpeedAccelData' 함수에 콜백을 전달하는 것입니다. 또는 getSpeedAccelData 함수에서'Promise'를 반환 할 수 있습니다. –

+0

[비동기 호출에서 응답을 반환하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/14220321/how-do-i- return-from-an-asynchronous-call) –

답변

1

그런 다음 컨트롤러에서이 같이 진행할 수있는이

var getSpeedAccelData = function() { 

    var promise = new Promise(function (resolve, reject) { 

    var jsonStr; 

    var con = mysql.createConnection({ 
     host: "localhost", 
     user: "root", 
     password: "root", 
     database: "db_name" 
    }); 

    con.connect(function(err){ 
     if(err){ 
     console.log('Error connecting to Db'); 
     reject(); 
     } 
    }); 

    con.query('SELECT * FROM table_name',function(err, result){ 
     if(err) { 
     reject(err); 
     } else { 
     jsonStr = JSON.stringify(result) 
     resolve(jsonStr); 
     } 

    }); 

    con.end(); 

    }); 

    return promise; 
}; 

을 달성하기 위해 Promise를 사용할 수 있습니다

router.get('/', function(req, res, next) { 
    getSpeedAccelData() 
    .then(function success(result) { 
    res.render('index', { speedAccelData: result }); 
    }, function error(error) { 
    ... 
    }); 
}); 
+0

왜 downvote? 내가 실수 한거야? –

관련 문제