我試圖將用戶資料插入我的資料庫,但資料沒有插入,它顯示用戶已經存在這封電子郵件如何解決這個問題?我的代碼在下面我嘗試過使用不同的電子郵件,即使它是用戶已經存在于這封電子郵件中并且它沒有插入到資料庫中。
服務器.js
require("dotenv").config();
const express = require("express");
const app = express();
const mongoose = require("mongoose");
const port = process.env.PORT || 3500;
app.use(express.json());
//DB connection
mongoose
.connect(process.env.MONGO_URL)
.then(() => console.log("DB Connection Successful"))
.catch((err) => console.log(err));
//Routes
app.use("/api/auth/", require("./routes/auth"));
app.listen(port, () => {
console.log("Server is running on Port " port);
});
用戶.js
const mongoose = require("mongoose");
const bcrypt = require("bcrypt");
const userSchema = new mongoose.Schema(
{
firstName: { type: String, required: true, trim: true, min: 3, max: 30 },
lastName: { type: String, required: true, trim: true, min: 3, max: 30 },
userName: {
type: String,
required: true,
trim: true,
min: 3,
max: 30,
unique: true,
index: true,
lowercase: true,
},
email: {
type: String,
required: true,
trim: true,
unique: true,
lowercase: true,
},
userPassword: { type: String, required: true },
role: { type: String, enum: ["user", "admin"], default: "admin" },
contactNumber: { type: String },
profilePicture: { type: String },
},
{ timestamps: true }
);
userSchema.virtual("password").set(function (password) {
this.userPassword = bcrypt.hashSync(password, 10);
});
userSchema.methods = {
authenticate: function (password) {
return bcrypt.compareSync(password, this.userPassword);
},
};
module.exports = mongoose.model("User", userSchema);
身份驗證.js
const router = require("express").Router();
const User = require("../models/user");
router.post("/signin", (req, res) => {});
router.post("/register", async (req, res) => {
const user = User.findOne({ email: req.body.email });
if (!user) {
const newUser = new User(req.body);
await newUser.save();
res.status(201).json({
user: newUser,
});
} else {
res.status(400).json({
message: "User already exist with this email",
});
}
});
module.exports = router;
請找到附件圖片

uj5u.com熱心網友回復:
查詢資料庫是一個異步函式呼叫。在這里,auth.js如果用戶退出,您正在檢查異步。const user = User.findOne({ email: req.body.email });
您應該像這樣添加 await:const user = await User.findOne({ email: req.body.email });
因為,它的異步 Javascript 不會等待答案,并且不會對用戶變數進行定義。因此,您最終會使用 else 陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/387315.html
標籤:javascript 节点.js 猫鼬
上一篇:MongoosedeleteMany在nodejs上使用_id
下一篇:貓鼬索引html文本?
