Goodmorning,включают обыкновение возвращать данные из массива
У меня есть вопрос/проблема с сценарием, который им зданием, им, используя для моделирования включает в себя мои массивах ан вернуть их к server.js
данные показывают на консоль, но не на посетителей, на простой веб-странице, если я поместил запрос и мое моделирование в файл server.js, он работает, есть ли у кого-то причина, почему include не вернет результаты с запросом?
Server.js
var io = require('socket.io').listen(3000);
var data_model = require("./data_model.js");
io.sockets.on('connect', function(socket) {
console.log('There is a connection');
io.emit("data", "There is a connection");
console.log(data_model.retrieve()); // THIS LINE WORKS,
socket.emit("dataretrieve", JSON.stringify(data_model.retrieve()));
});
моя модель данных
var mysql = require('mysql');
var connection = mysql.createConnection({
host: "",
user: "",
password: "",
database: ""
});
var data_model = {
retrieve: function() {
connection.query('SELECT * FROM data_retrieve', function(err, rows, fields, data) {
if (rows.length === 0) {
} else {
dataretrieve = {};
dataretrieve["data_retrieve"] = {};
dataretrieve["data_retrieve"] = {
id: rows[0].id,
msg: rows[0].msg
};
return JSON.stringify(dataretrieve);
}
});
}
};
module.exports = data_model;
текущей страницы:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script>
<script src="http://172.0.2.13:3000/socket.io/socket.io.js"></script>
<script>
$(document).ready(function(){
var socket = io.connect('http://172.0.2.13:3000');
socket.on('data', function(data){
document.getElementById('connection').innerHTML = data;
});
socket.on('dataretrieve', function(dataretrieve){
console.log(dataretrieve); //WONT SHOW THE DATA
});
});
</script>
<body>
<pre>
<div id="connection"></div>
<div id="dataretrieve"></div>
Ваш результат от 'connection.query()' является асинхронным. Таким образом, данные еще не доступны, когда возвращается функция 'retrieve()'. Вам нужно использовать обещания или обратный вызов, чтобы передать полученные асинхронные данные обратно вызывающему, а не простое возвращаемое значение. См. Дубликат для описания ваших опций. – jfriend00