Так иметь файл с именем mobile.js
, создать соединение с базой данных, с функцией, которая вызывает в запросе и возвращает набор мобильных телефонов:Получение результатов MySQL в файл маршрута
var mysql = require('mysql');
var pool = mysql.createPool({
//database information
});
module.exports =
{
getAllModels: function()
{
pool.getConnection(function(err, connection)
{
connection.query("SELECT model FROM product", function(err, res, fie)
{
if(err) throw err;
connection.release();
//console.log(res);
return res;
});
});
}
};
сейчас , раскомментировать код, указанный выше я получаю объект JSON [{model: 'LG'}, {model: 'Samsung'}, ...]
, но когда я пытаюсь достичь этой переменной в файле index.js
маршрута через:
var express = require('express');
var router = express.Router();
var mobileRepo = require('../repositories/mobile');
router.get('/', function(req, res, next) {
var modeli = mobileRepo.getAllModels();
console.log(modeli);
res.render('index');
});
module.exports = router;
modeli
переменная будет undefined
.
Через моего текущего исследования, я знаю, что это происходит потому, что connection.query
является резьбовой функцией асинхронной /, но то, что я не могу найти где-нибудь, и я пытаюсь выяснить, в том, как этого избежать?
В основном, как объединить маршрут и результат соединения, таким образом, позволяя переменной получить результат запроса?
Я также очень с удовольствием принимаю любые хорошие отзывы о теме или Node.js в целом, так как я в настоящее время это изучаю!
Спасибо за чтение!
EDIT: Я даже вижу, что результат запроса приходит после загрузки страницы, но я до сих пор не знаю, как заставить запрос ждать.
Tue, 10 Nov 2015 00:42:06 GMT expressnodejs:server Listening on port 3000
undefined <--- this is calling the result from index.js
GET/200 72.216 ms - 179
[ { model: 'Samsung' }, { model: 'LG' } ] <--- calling result from mobile.js when query is done
Одна вещь, которая пришла мне в голову, чтобы создать функцию результата:
module.exports =
{
getAllModels: function(outcome)
{
pool.getConnection(function(err, connection)
{
connection.query("SELECT model FROM product", function(err, res, fie)
{
//snip
outcome(res);
}}}};
Но разве это не разорвать саму идею о том, почему Node.js так быстро, в первую очередь?
Итак, я это ** **, что я должен делать .. Спасибо за поздний ответ! Я буду отмечать это как ответ. – NemanjaT