Tengo un problema con respecto a la verificación de correo electrónico y números de teléfono en mi base de datos MongoDB. Mi código solo verifica si el correo electrónico está presente en la base de datos pero no responde al teléfono.
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;He agregado mi archivo UserSchema. No creo que tenga un error, compruebe si algo está mal aquí. Quiero que el código verifique tanto el correo electrónico como el teléfono y luego lo use para fines de autenticación.
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;Desea verificar si el email O phone existe en la base de datos. Su consulta actual verifica si ambos existen. Debe usar el operador $or para su consulta, así:
await User.findOne({ "$or": [ { email: email }, { phone: phone} ] });