主体对于POST方法的MySQL INSERT不正确

时间:2019-05-15 07:41:23

标签: mysql node.js api postman

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

但是,我在数据库中添加数据的方法INSERT INTO在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.' });
    });
});

这是我在邮递员中得到的回复:

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

这是我的SQL数据库:

enter image description here

2 个答案:

答案 0 :(得分:2)

假设您正在使用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. 插入声明应为“插入国家VALUES(?,?,?),[...参数]
  2. 您不应在Insert语句中使用SET关键字。

-

编辑2:

基于mysql包文档,您应按以下方式构造查询-

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

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

答案 1 :(得分:0)

let country = req.body.country; 您正在寻找您没有的recount.body中的“国家/地区”值。

尝试将其添加到正文中

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