我的所有方法(例如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数据库:
答案 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也有问题。
-
编辑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"
}