Express应用程序没有获得通过react应用程序发送的主体,它打印未定义的内容。但是react和node-js方法中的路径都是正确的,使用了body-parser
,主体在react js中有键和值方法我找不到问题。
客户端方法。正在尝试调用服务器中定义的post方法。
const handleSignUp = () => {
// dispatch(setLoadingState("loading"));
const userData = {
firstName: firstName,
lastName: lastName,
email: email,
password:password
}
var headers = { 'Content-Type': 'application/json' }
axios.post('/api/auth/create',userData, {
headers :{ 'Content-Type': 'application/json' }})
.then(function (response) {
console.log(response);
服务器方法
const express = require("express");
const { MongoClient, ObjectID } = require("mongodb");
const app = express();
const cors = require("cors");
const cookieParser = require("cookie-parser");
const bodyParser = require('body-parser');
const axios=require('axios');
const port = 3001;
// Connection URL
app.use(cors());
app.use(express.json());
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'sample';
// Create a new MongoClient
const client = new MongoClient(url);
// Use connect method to connect to the Server
client.connect(err => {
if (err) {
console.log(err);
process.exit(1);
}
console.log("Connected successfully to server");
const db = client.db(dbName);
app.post("/api/auth/create", (req, res) => {
console.log("AuthService server", req.body.userData);
db.collection("users").insertOne({
firstName: req.body.userData.firstName,
lastName: req.body.userData.lastName,
email: req.body.userData.email,
password: req.body.userData.password
});
res.send("You are a registered user now");
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
});```
I can see in log in auth Service method that body is undefined.
log :AuthService server undefined
Error :TypeError: Cannot read property 'firstName' of undefined
在前端部分尝试此操作:axios.post('/api/auth/create',{userData},
req.body.userData
不存在,这就是它未定义的原因,请尝试以下操作:
app.post("/api/auth/create", (req, res) => {
db.collection("users").insertOne({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
});
res.send("You are a registered user now");
});
我在后端中更改了代码
console.log("AuthService server", req.body.userData);
const { userName, email, password } = req.body.userData;
db.collection("Users").insertOne({
userName,
email,
password,
});
}```
and in the frontend
```const handleSignUp = () => {
// dispatch(setLoadingState("loading"));
const userData = {
userName,
email,
password,
};
axios
.post("/api/auth/create", { userData })
.then(function (response) {
dispatch(setLoadingState("init"));
if (response.data === "OK") {
setResponseMessage(true);
setIsErrorMessage(false);
} else {
setResponseMessage(false);
setIsErrorMessage(true);
}
})
.catch(function (error) {
console.log(error);
});
};```