首页 > 解决方案 > 如何发送 JSON 数据而不是将其记录到控制台

问题描述

我正在使用 Flutter 中的食品订购应用程序和 Express.js 中的 API 以及用于数据库的 MySql。我能够连接到数据库并接收 JSON 数据和 console.log() 它们,但我不知道如何将它们发送到应用程序。任何帮助将不胜感激。

这是代码。

const express = require('express');
const router = express.Router();
const mysql = require('mysql');

var pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'ala_ainy_db',
    connectionLimit: 10,
});

router.get('/', (req, res, next) => {

    pool.getConnection(function (err, conn) {
        if (err) return;
        conn.query('SELECT * FROM restaurants', function (err, rows) {
            if (err) {
                conn.release();
                console.log('failed');
            }
            rows.forEach((row) => {
                console.log(`ID: ${row.id}, Name: ${row.name}`);
            });
            conn.release();
        })
    });
});

标签: javascriptnode.jsexpress

解决方案


res.json()您可以使用 express或res.send()方法发送您的数据作为响应。

res.json()发送 JSON 响应。此方法发送一个响应(具有正确的内容类型),该响应是使用JSON.stringify()转换为 JSON 字符串的参数。

res.send()发送 HTTP 响应。body 参数可以是 Buffer 对象、String、对象或 Array。

例子:

const express = require('express');
const router = express.Router();
const mysql = require('mysql');

var pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'ala_ainy_db',
    connectionLimit: 10,
});

router.get('/', (req, res, next) => {

    pool.getConnection(function (err, conn) {
        if (err) return;
        conn.query('SELECT * FROM restaurants', function (err, rows) {
            if (err) {
                conn.release();
                console.log('failed');
            }
            conn.release();
            res.status(200).json(rows);
            
        })
    });
});

推荐阅读