我正在按照教程尝试学习 MERN。我已经创建了将数据发送到数据库的函数,但我在数据库中看不到这些数据。代码如下
export const signup = async (req, res) => {
try {
const { fullName, username, password, confirmPassword, gender } = req.body;
if (password !== confirmPassword) {
return res.status(400).json({ error: "Passwords don't match" });
}
const user = await User.findOne({ username });
if (user) {
return res.status(400).json({ error: "Username already exists" });
}
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
const boyProfilePic = `https://avatar.iran.liara.run/public/boy?username=${username}`;
const girlProfilePic = `https://avatar.iran.liara.run/public/girl?username=${username}`;
const newUser = new User({
fullName,
username,
password: hashedPassword,
gender,
profilePic: gender === "male" ? boyProfilePic : girlProfilePic,
});
if (newUser) {
generateTokenAndSendCookie(newUser._id, res);
await newUser.save();
res.status(201).json({
_id: newUser._id,
fullName: newUser.fullName,
username: newUser.username,
profilePic: newUser.profilePic,
});
} else {
res.status(400).json({ error: "Invalid user data" });
}
} catch (error) {
console.log("Error in signup controller", error.message);
res.status(500).json({ error: "Internal Server Error" });
}
}
当我尝试访问 /api/auth/signup 时,我收到了此消息。
cannot GET /api/auth/signup
也许问题是我使用的是 POST 而不是 GET 请求?
import express from "express";
import { login, logout, signup } from "../contollers/auth.controller.js";
const router = express.Router();
router.post("/signup", signup);
router.post("/login", login);
router.post("/logout", logout);
export default router;
但是即使当我尝试发送数据时,我也会收到此错误
Error in signup controller Illegal arguments: undefined, string
通常我不知道在这里做什么
尝试安装body-parser
npm install body-parser
之后添加到您的快速申请中
express.use(bodyParser.urlencoded({extended: true}));
const router = express.Router();