узел.JS как остановить бесконечный запрос?

#node.js

#node.js

Вопрос:

Я получил этот простой скрипт, использующий express Framework и node-mysql. В принципе, код прослушивает запрос от клиента, если есть запрос, он отправит запрос к базе данных. затем без дальнейших церемоний он просто отправляет сообщение обратной связи обратно клиенту.

Проблема, сообщение обратной связи никогда не отправляется клиенту, потому что запрос никогда не закрывается. Вы можете запустить код и посмотреть, о чем я на самом деле говорю, логин базы данных в коде действителен. Перед запуском вам нужны «npm install express» и «npm instal mysl». сохраните код в файл и запустите его в nodejs. Затем откройте браузер и введите адрес localhost: 4000

  var mysql = require('mysql').Client,
    express = require('express');

//databse work
var client = new mysql();
client.host = '112.78.2.135';
client.user = 'vietnaml_craig';
client.password = 'camera';
client.database = 'vietnaml_db';
client.connect();

var app = express.createServer();

//prepare to create server session for the user
var store = new express.session.MemoryStore;
app.use(express.cookieParser());
app.use(express.session({ 
    secret: 'something', 
    store: store
}));
//tell server listen to get request from client
app.get('/', function(req, res){
    client.query(
        'SELECT * FROM user_cookie ',
        function selectCb(err, results, fields) {
                res.header('Content-Type', 'text/plain');
                res.header('Access-Control-Allow-Origin', '*');
                res.send('go to go');
                res.end();
            console.log(results);
            client.end();
        }
    );

});
app.listen(4000);
  

Комментарии:

1. Вы проверили, предоставлен ли какой-либо ответ базой данных? Попробуйте добавить if (err) { throw err; } в свою selectCB функцию и посмотрите, правильно ли выполняется запрос.

2. привет, я отредактировал код, вы можете запустить его и получить данные из моей базы данных.

Ответ №1:

Я только что запустил ваш код и прокомментировал res.end() , и у меня это работает на моем компьютере

 function selectCb(err, results, fields) {
            res.header('Content-Type', 'text/plain');
            res.header('Access-Control-Allow-Origin', '*');
            res.send('go to go');
            // res.end(); <- not needed?
        console.log(results);
        client.end();
    }
  

Комментарии:

1. попробуйте обновить браузер пару раз, и вы увидите другую проблему.

2. @runrunforest я также прокомментировал client.end(); , чтобы иметь возможность отправлять несколько запросов без перезапуска узла