Viv*_*shi 4 javascript mongoose mongodb node.js express
我在检查 MongoDB 数据库中的电子邮件和电话号码时遇到问题。我的代码仅检查电子邮件是否存在于数据库中,但不响应电话。
const express = require("express");
const router = express.Router();
require("../db/conn");
const User = require("../model/userSchema");
router.get("/", (req, res) => {
res.send(`Hello World from server lolstar`);
});
router.post("/register", async (req, res) => {
const { name, email, phone, work, password, cpassword } = req.body;
if (!name || !email || !phone || !work || !password || !cpassword) {
return res.status(422).json({ error: "Please fill your details" });
}
try {
const userExist = await User.findOne({ email: email }, {phone: phone });
if (userExist)
{
return res
.status(422)
.json({ error: "Email or Phone number already exists" });
}
const user = new User({ name, email, phone, work, password, cpassword });
const userRegister = await user.save();
if (userRegister)
{
res.status(201).json({ message: "User registered successfully" });
}
} catch (err) {
console.log(err);
}
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
我已经添加了我的 UserSchema 文件。我不认为它有错误,请检查这里是否有问题。我希望代码检查电子邮件和电话,然后将其用于身份验证目的。
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
},
phone: {
type: Number,
required: true,
},
work: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
cpassword: {
type: String,
required: true,
}
})
const User = mongoose.model('USER', userSchema);
module.exports = User;
Run Code Online (Sandbox Code Playgroud)
您想检查数据库中是否存在email OR 。 phone您当前的查询检查它们是否都存在。您应该使用$or运算符进行查询,如下所示:
await User.findOne({ "$or": [ { email: email }, { phone: phone} ] });
Run Code Online (Sandbox Code Playgroud)