You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js接口返回旧MySQL数据:Postman无法获取新增用户

问题分析与解决方案

核心问题

  1. 数据仅初始化查询一次:服务启动时执行了一次SELECT * FROM users,结果存入cevap变量后就不再更新,新增用户后接口返回的始终是启动时的旧数据。
  2. 数据库连接提前关闭:初始化查询完成后调用baglanti.end()关闭了连接,后续无法再通过该连接查询最新数据。
  3. 接口未实时拉取数据:POST /users接口直接返回缓存的旧数据,没有每次请求时重新查询数据库。

修改后的代码

将查询逻辑移至接口回调内,确保每次请求都获取最新数据,同时保留数据库连接:

const mysql = require('mysql');
const express = require('express');
const app = express();
const port = 3000;

// 解析JSON请求体(用于接收新增用户的参数)
app.use(express.json());

const baglanti = mysql.createConnection({
    host: 'example',
    user: 'example',
    password: 'example',
    database: 'example'
});

baglanti.connect(err => {
    if (err) throw err;
    console.log('数据库连接成功');
});

// 每次请求接口时实时查询最新用户数据
app.post('/users', (req, res) => {
    baglanti.query('SELECT * FROM users', (error, results) => {
        if (error) {
            console.error(error);
            return res.status(500).send('查询用户数据失败');
        }
        res.send(results);
    });
});

app.listen(port, () => {
    console.log(`服务运行在端口 ${port}`); 
});

扩展:新增用户后实时返回全量数据

如果需要在同一个接口完成「新增用户+返回最新列表」的逻辑,可以修改为:

app.post('/users', (req, res) => {
    // 从请求体获取新增用户的参数
    const newUser = req.body;
    // 插入新用户
    baglanti.query('INSERT INTO users SET ?', newUser, (insertErr) => {
        if (insertErr) {
            console.error(insertErr);
            return res.status(500).send('新增用户失败');
        }
        // 插入成功后查询最新用户列表
        baglanti.query('SELECT * FROM users', (selectErr, results) => {
            if (selectErr) {
                console.error(selectErr);
                return res.status(500).send('查询用户列表失败');
            }
            res.send(results);
        });
    });
});

内容的提问来源于stack exchange,提问作者Efe Bostancı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:37:19