Bread09
@Bread09
Newonkiy

Как получить данные из БД без перезагрузки сервера?

Если говорить короче, то я содаю простой чат в котором:
1) пользователь вводить текст, сабмит.
2) сокет записываетв БД то, что клиент вел и возвращает тоже самое
3) когда обновляет страницу должны записываться те записи, которые были отправлены ранее
4) а мне приходится перезапускать сервер (ctrl+c / node app), что бы записи появились

Шаблон
<div class="form">
			<form action="">
				<input class="m" type="text" placeholder="Введите сообщение...">
				<button class="send" type="submit">Отправить</button>
			</form>
		</div>

		<div class="sms">
			<h3>
				<% for (var i = 0; i < smsText.length; i++) { %>
		            <p><%= smsText[i].text %></p>
		        <% } %>
			</h3>
		</div>
	</div>
</div>

<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
<code lang="javascript">
	$(function () {
		var socket = io();

		$('form').submit((e) => {
	      e.preventDefault();
	      socket.emit('chat message', $('.m').val());
	      $('.m').val('');
	      return false;
	    });

	    socket.on('chat message', function(msg){
	    	$('.sms').append($('<li>').text(msg));
	    });
	  });
</code>
</script>


app.js
// Chat
var reqDB = 'SELECT * FROM messages';

db.query(reqDB, (err, result) => {
	if (err) throw err;

	for(let i=0; i < result.length; i++){
		result[i].text;
	}

	// Chat render
	app.get('/chat', function (req, res) {
		res.render('chat', {
			smsText: result
		});
	});
});

// Socket Connect
io.on('connection', function (socket) {
	console.log('Socket Run...')

	// Send sms
	socket.on('chat message', function(msg, cl){

		let sql = `INSERT INTO messages (id, text) VALUES (NULL, '${msg}')`;

		db.query(sql, (err, result) => {
			if (err) throw err;
			console.log(result);
			console.log('SMS send! YES!!!');
		})

		io.emit('chat message', msg);
	});

	// Disconnect
	socket.on('disconnect', function(){
		console.log('Socket STOP!');
	});
});
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы