Javascript 为什么我的POST请求在尝试插入表单数据时不起作用?
这是我的服务器端Javascript 为什么我的POST请求在尝试插入表单数据时不起作用?,javascript,node.js,reactjs,express,Javascript,Node.js,Reactjs,Express,这是我的服务器端 const express = require("express"); const app = express(); const cors = require("cors"); const pool = require("./db"); const { response } = require("express"); app.use(cors()); app.use(express.json())
const express = require("express");
const app = express();
const cors = require("cors");
const pool = require("./db");
const { response } = require("express");
app.use(cors());
app.use(express.json());
app.post("/species", async (req, res) => {
try {
console.log(req)
const {name, description, img} = req.body
const newSpecies = await pool.query(
"INSERT INTO speciesdata (name, description, img ) VALUES ($1, $2, $3) RETURNING *",
[name, description, img]
);
console.log(newSpecies)
res.json(newSpecies.rows);
} catch (err) {
console.error(err.message);
}
});
我不确定我是否正确地解构了req.body
的属性,因为当我控制台记录它时,它返回了一个空数组
这是我的前端
function AddspeciesForm() {
const [Name, setName] = useState('');
const [Description, setDescription] = useState('');
const [Image, setImage] = useState('');
const onSubmitForm = async e => {
e.preventDefault();
try {
const response = await fetch("http://localhost:5000/species", {
method: 'POST',
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
name: Name,
description: Description,
img: Image
})
});
const data = await response.json()
console.log(data)
window.location = "/";
} catch (err) {
console.error(err.message);
}
};
}
由于这是我的第一个项目,需要后端和前端,我可能用一种尴尬的方式表达了我的问题,希望你们能理解。提前谢谢你
这是我的邮递员请求。
更新1
当我在邮递员上将
内容类型
更改为application/JSON
时,值不再为空。和req.body
返回正确的值。但是在我的前端,我已经指定了我的内容类型:application/JSON
。那么,我如何在我的应用程序上引入和显示更改呢?在发送请求时不需要使用JSON.stringify
,因为它是以JSON格式发送的。如果您使用JSON.stringify,它将成为纯文本。您确定必须使用JSON.stringify()
?是否需要将调用移动到app.use(express.JSON())
在app.listen(port)
?@Gpack有什么区别?我已经删除了JSON.stringify()
,但它仍然返回一个空数组