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();
};
レンダリングするクエリデータを返すにはどうすればよいですか?
それは非同期**です、あなたは次のように値を返すことはできません。 。 1つの解決策は、コールバックを 'getSpeedAccelData'関数に渡すことです。または、あなたの 'getSpeedAccelData'関数で' Promise'を返すことができます –
[非同期呼び出しからの応答を返すにはどうすればいいですか?](http://stackoverflow.com/questions/14220321/how-do-i-非同期呼び出しからの返信) –