我的所有方法(如 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 数据库:
最佳答案
假设您正在使用 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 也有问题。
- 插入语句应为“INSERT into Country VALUES(?,?,?), [...parameters]
- 不应在 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/