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

解决SQLITE_ERROR: no such table: products及定制API返回JSON

问题分析与修复方案

1. POST请求报错原因

你在server.js的POST接口中尝试向products表插入数据,但SQLite数据库中实际创建的表是customer(在database.js的CREATE TABLE语句中定义),因此触发SQLITE_ERROR: no such table: products错误。而GET请求使用的是customer表,所以能正常返回结果。

2. 修复步骤及代码调整

2.1 修正POST接口的表名并调整返回格式

修改server.js中POST接口的SQL语句,将products替换为customer,同时调整返回结构为你需要的格式:

app.post("/api/products/", (req, res, next) => {
    try {
        var errors = [];

        if (!req.body) {
            errors.push("无效的输入内容");
            return res.status(400).json({ "error": errors.join(", ") });
        }

        const { 
            customerName,
            address,
            email,
            dateOfBirth,
            gender,
            age,
            cardHolderName,
            cardNumber,
            expirytDate,
            cvv,
            timeStamp
        } = req.body;

        // 修正表名为customer
        var sql = 'INSERT INTO customer (customerName, address, email, dateOfBirth, gender, age, cardHolderName, cardNumber, expirytDate, cvv, timeStamp) VALUES (?,?,?,?,?,?,?,?,?,?,?)';
        var params = [customerName, address, email, dateOfBirth, gender, age, cardHolderName, cardNumber, expirytDate, cvv, timeStamp];
        
        db.run(sql, params, function (err, result) {
            if (err) {
                return res.status(400).json({ "error": err.message });
            } 
            // 调整为要求的返回格式
            res.json({
                "message": `customer ${customerName} has registered`,
                "customerId": this.lastID
            });
        });
    } catch (E) {
        res.status(400).json({ "error": E.message });
    }
});

2.2 补充输入验证逻辑

原代码中errors数组未实际生效,上述代码补充了验证失败时的错误返回逻辑,确保输入异常时能明确提示。

2.3 统一路由语义(可选)

当前路由/api/products/操作的是customer表,命名不一致易造成混淆,建议将路由改为/api/customers/,同时同步修改GET、PUT、DELETE接口的路由,保持语义一致。

3. 验证修复效果

修改后重启服务,用Postman发送POST请求,将返回如下格式的JSON:

{
    "message": "customer A.D.Lakith Dharmasiri has registered",
    "customerId": 2
}

内容的提问来源于stack exchange,提问作者Redro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:20:16