【问题标题】:Valdaition for user exist or not using nodejs验证用户是否存在或不使用 nodejs
【发布时间】:2021-04-09 07:33:48
【问题描述】:

我正在使用 React 开发一个项目,但遇到了一个让我很困惑的问题。

我想添加新用户,但想检查用户是否存在我尝试提供自定义消息但仍然没有给我自定义消息。

所以这是我的代码,我无法弄清楚如何提供自定义消息。

如果有人有解决方案,如果你能帮助我,那就太好了

const Employee = require("../models/employeeSchema");

//custom imports
const AppError = require("../helpers/appErrorClass");
const sendErrorMessage = require("../helpers/sendError");
const sendResponse = require("../helpers/sendResponse");

const addEmployees = async (req, res, next) => {
    try {
        let data = req.body;
        let newEmployee = {};
        newEmployee.firstName = data.firstName.trim();
        newEmployee.lastName = data.lastName.trim();
        newEmployee.company = data.company.trim();
        newEmployee.email = data.email.trim();
        newEmployee.contact = data.contact;
        newEmployee.skills = data.skills.split(",").map((skill) => {
            return skill.trim();
        });
        newEmployee.altDescription = data.altDescription.trim();
        newEmployee.hobbies = data.hobbies.split(",").map((hobby) => {
            return hobby.trim();
        });
        newEmployee.socialLinks = [
            {
                gitHub: data.gitHub,
                linkedIn: data.linkedIn,
                website: data.website,
            },
        ];
        newEmployee.imageUrl = req.image;
        let employee = await Employee.find({ email: newEmployee.email });
        if (employee.email === newEmployee.email) {
            return sendErrorMessage(
                new AppError(
                    400,
                    "Unsuccessful",
                    "Email already exist try with another Email id"
                ),
                req,
                res
            );
        } else {
            let data = await Employee.create(newEmployee);
            sendResponse(200, "Employee added Succesfully", data, req, res);
        }
    } catch (err) {
        return sendErrorMessage(new AppError(400, "unsuccessful", err), req, res);
    }
};

module.exports.addEmployees = addEmployees;

我不知道为什么会发生这种情况,如果有人遇到过这种情况,我将不胜感激。


编辑:

console.log(employee) 输出以下内容:

[{ 
  employeeId: 'c88wgb4ocuw01609613746852',
  contact: 123456789,
  imageUrl: 'http://res.cloudinary.com/altafshaikh/image/upload/v1609613765/qbl7ujyz0wi6cy0xt3rf.jpg',
  skills: [ 'sleep', 'laziness' ],
  altDescription: 'Hello Saurav',
  hobbies: [ 'Nautanki', 'doubtfull' ],
  socialLinks: [ {} ],
  _id: 5ff0c1c5327f300a55f6259a,
  firstName: 'Saurav',
  lastName: 'Upadhyay',
  company: 'Raw',
  email: 'sourav23@gmail.com',
  __v: 0 
}]

【问题讨论】:

    标签: javascript node.js reactjs validation mongoose


    【解决方案1】:

    这是因为employee 是一个数组。您需要访问第一个元素。

    if (employee.length && employee[0].email === newEmployee.email) {
                return sendErrorMessage(
                    new AppError(
                        400,
                        "Unsuccessful",
                        "Email already exist try with another Email id"
                    ),
                    req,
                    res
                );
            }
    

    由于 db 查询条件为email,我们可以假设如果没有找到匹配项,它将返回空数组。这也意味着只有找到匹配项时才会填充数组。所以我们也可以避免不必要的检查邮件是否相等。你可以这样做。

    if (employee.length) {
      return sendErrorMessage(
                    new AppError(
                        400,
                        "Unsuccessful",
                        "Email already exist try with another Email id"
                    ),
                    req,
                    res
                );
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2015-09-23
      相关资源
      最近更新 更多