Я довольно новичок в Express и Node MySQL, и я просто пытался разобраться в нескольких вещах.У меня есть обработчик .get()
в моем файле app.js и кнопка, которая выбирает обработчик.
Когда я регистрирую jsonResponse на консоли, он показывает мне только первую запись - но app.js, похоже, отправляет все строки (как записано на консоли cli):
// client.js
showUsersButton.addEventListener('click', async () => {
fetch('/show-users').then(response => {
return response.json();
}).then(jsonResponse => {
console.log(jsonResponse); // first row of table
contents.innerHTML = jsonResponse; // [object Object]
contents.innerHTML += jsonResponse.name; // name value for first row in table
})
})
Это обработчик событий для кликов по кнопке.Ниже приведен соответствующий метод `.get () 'для решения этой проблемы:
// app.js
app.get('/show-users', (req, res) => {
connection.connect(error => {
if (error) throw error;
console.log('Connected to the database.');
})
let query = connection.query('SELECT * FROM users');
query.on('result', row => {
console.log(row); // logs all entries of the table
res.send(row);
})
})
Когда нажата кнопка, на консоли CLI отображаются два результата - обе записи в таблице (IЯ настроил это только для того, чтобы я мог учиться).Объект jsonResponse регистрируется в консоли браузера и отображается как только первая запись в таблице - он также может отображаться на странице.
Но он дает сбой серверу:
Server side JS is running.
The server is listening for requests at port 5000.
Connected to the database.
RowDataPacket { id: 1, name: 'Danny', level: 1 }
RowDataPacket { id: 2, name: 'Chloe', level: 1 }
C:\Users\User\desktop\node-site\node_modules\mysql\lib\protocol\Parser.js:80
throw err; // Rethrow non-MySQL errors
^
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:494:11)... etc etc
Может ли кто-нибудь дать мне знать, что я делаю не так?