Я пытаюсь изучить node.js, и я застрял, пытаясь отправить JSON в браузер, я не пытался использовать службу REST, потому что, по-видимому, JSON не отправляется, он не отображается в почтальоне.
Это мой код:
Пул соединений с базой данных
const mysql = require('mysql');
const pool = mysql.createPool({
host: "localhost",
database: "dbname",
user: "root",
password: "",
debug: true
});
module.exports.pool = pool;
Показатель
const Joi = require('joi');
const connections = require('./connections')
const express = require('express');
const app = express();
app.use(express.json());
function getClients() {
return new Promise((resolve, reject) => {
connections.pool.getConnection((error, connection) => {
connection.query("select * from clientes", (error, rows) => {
if (error) {
reject(new Error);
}
else {
resolve(JSON.stringify(rows));
}
})
connection.release();
})
});
}
app.get('/', (req, res) => {
getClients().then((rows) => {console.info(rows)})
.catch(err => err);
console.info(res);
res.end();
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.info(`listening on port ${PORT}`));
В этой части:
getClients().then((rows) => {console.info(rows)})
Он регистрирует правильный ответ JSON в конце, однако я обращаю внимание на то, что я получаю очень длинный ответ сервера перед строкой JSON.
когда я использую res.send(rows), он ничего не отображает, почтальон дает мне ответ 200 и пустую страницу.
Я буквально начал изучать NODEJS 3 дня назад, и я застрял с этим на один день :(
Вы не отправляете никаких данных в ответ.
res.send
не отправляет JSON, отправляет только строку res.json()
app.get('/', (req, res) => {
getClients()
.then((rows) => res.json(rows))
.catch(err => res.status(400).json(err));
});
Спасибо! Мне также больше не нужна эта строка resolve(JSON.stringify(rows)); вместо этого просто разрешите (строки); и с вашим кодом я получил ответ JSON в браузере!