Node.js邮递员,向客户端/浏览器发送JSON响应

时间:2019-04-10 05:57:49

标签: node.js

我正在尝试学习node.js,并且试图将JSON发送到浏览器时遇到了麻烦,我没有尝试使用REST服务,因为显然没有发送JSON,它没有出现在邮递员中。 / p>

这是我的代码:

数据库连接池

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.log(rows)})
                .catch(err => err);
    console.log(res);

    res.end();
});


const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`listening on port ${PORT}`));

在这一部分:

getClients().then((rows) => {console.log(rows)})

它在末尾记录了正确的JSON响应,但是引起了我极大的注意,我在JSON字符串之前收到了非常长的服务器响应。

当我使用res.send(rows)时,它什么也没显示,邮递员给了我200响应和空白页。

我从三天前开始学习NODEJS,我已经坚持了一天:(

1 个答案:

答案 0 :(得分:0)

您没有发送任何数据作为响应。 res.send不发送JSON,仅发送字符串使用res.json()

app.get('/', (req, res) => {  
    getClients()
    .then((rows) => res.json(rows))
    .catch(err => res.status(400).json(err));
});