【发布时间】:2021-10-28 13:39:01
【问题描述】:
我正在创建一个新用户并检查用户电子邮件以前是否存在。如果不是,那么它正在创建一个新用户并保存它。我需要什么来纠正这个验证错误?
我已经尝试过将名称设置为不需要。但是还是不行。
这是我的用户模型。
用户.js
import mongoose from 'mongoose'
const UserSchema = new mongoose.Schema(
{
username: {
type: String,
required: true,
unique: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
profilePic: {
type: String,
default: "",
},
},
{ timestamps: true }
);
const User = mongoose.model("User",UserSchema)
export default User
这是我的路由器文件
import User from '../model/User.js'
import express from 'express'
const router = express.Router()
//register
router.post("/register",async (req,res) => {
try{
const newUser = new User({
username:req.body.username,
password:req.body.password,
email:req.body.email
})
const user =await newUser.save()
res.status(200).json(user)
}catch(err){
res.status(500).json(err)
}
})
export default router
这是我的 app.js
import express from 'express'
import mongoose from 'mongoose'
import dotenv from 'dotenv'
import UserRoute from './routes/User.js'
const app = express()
dotenv.config()
app.use(express.json())
app.use(express.urlencoded({ extended: true }));
const PORT = process.env.PORT || 3000
mongoose
.connect(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(console.log("Connected to MongoDB"))
.catch((err) => console.log(err));
app.use("/api/auth",UserRoute)
app.listen(PORT , () => console.log(`backend started on ${PORT}` ))
如果我尝试对密码进行加密然后在我的路由中使用它,那么我也会注意到一件事,然后在邮递员中发出请求而不是错误消息后,我在邮递员中得到空对象 {},这是什么原因???
代码有什么问题我尝试了不同的方法来通过从堆栈溢出中引用来解决这个问题,但没有奏效
感谢您的帮助
【问题讨论】:
-
问题可能出在客户端。您没有收到正文参数。您可以在拨打
/register的位置发布客户端代码吗? -
有一次我没有在客户端使用 /register 调用,而只是在邮递员中对其进行测试并在此处发布我的代码:github.com/priyanshu740/BlogApp@LucaPizzini
标签: javascript node.js mongodb express mongoose