mysql - MySQL INSERT for POST 方法的正文不正确

标签 mysql node.js api postman

我的所有方法(如 SELECT 等)都可以,我可以在 Postman 中检索我的数据。

但是,我在数据库中添加数据的 INSERT INTO 方法在 Postman 中不起作用。 body 好像不太对劲。

这是我尝试使用 Postman 发送的正文:

{
    "id": 2000,
    "code": 4,
    "alpha2": "AF",
    "alpha3": "AFG",
    "name_en": "Afghanistan",
    "name_fr": "Afghanistan"
}

这是node.js中的代码:

app.post('/country', function (req, res) {

    let country = req.body.country;

    if (!country) {
        return res.status(400).send({ error:true, message: 'Please provide country' });
    }

    mc.query("INSERT INTO country SET ? ", { country: country }, function (error, results, fields) {
        if (error) throw error;
        return res.send({ error: false, data: results, message: 'New country has been created successfully.' });
    });
});

这是我在 Postman 中得到的回复:

{
    "error": true,
    "message": "Please provide country"
}

这是我的 SQL 数据库:

enter image description here

最佳答案

假设您正在使用 body-parser 包并已正确加载它,

const bodyParser = require("body-parser);
app.use(bodyParser.json())

那么,您的有效负载不正确。

您需要在对象的根目录中包含country键 -

{
 "country": {
    "id": 2000,
    "code": 4,
    "alpha2": "AF",
    "alpha3": "AFG",
    "name_en": "Afghanistan",
    "name_fr": "Afghanistan"
 }
}

您当前的代码正在查找 req.body.country,但它不存在。如果您执行req.body.alpha3,您就会明白我的意思。

-- 编辑:

您的 SQL 也有问题。

  1. 插入语句应为“INSERT into Country VALUES(?,?,?), [...parameters]
  2. 不应在 Insert 语句中使用 SET 关键字。

--

编辑 2:

根据 mysql 包文档,您应该按如下方式构建查询 -

mc.query("INSERT INTO country SET ? ", country, function (error, results, fields) {....

假设您按照我之前的描述创建了对象,并且国家/地区存在于根中,则不要将国家/地区包装在另一个对象内。否则,只需按原样传递 req.body(当然,您应该转义查询)。

关于mysql - MySQL INSERT for POST 方法的正文不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56143992/

相关文章:

mysql - SQL 加入 SQLzoo

python - 工件批量更新

Php 使用 mysql_fetch_array 排序

mysql MyISAM 数据库和外键关系在 phpmyadmin 中如何工作? MyISAM 有更新吗?

php - 根据其他查询的值选择查询

node.js - npm 审核 EINVALIDTAGNAME

javascript - Node js + jade 打印在 jade 文件中传递变量

node.js - 使用node.js、express和socket.io的设计选择

c# - ServiceStack 中的复杂路由

ios - 在 iOS 游戏中使用 Parse.com