如何检查 mongodb 数据库中是否已存在电子邮件或电话

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)

Nen*_*vic 5

您想检查数据库中是否存在email OR 。 phone您当前的查询检查它们是否存在。您应该使用$or运算符进行查询,如下所示:

await User.findOne({ "$or": [ { email: email }, { phone: phone} ] });
Run Code Online (Sandbox Code Playgroud)