MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Персонализирано валидиране на Mongoose за парола

Тъй като не трябва да запазвате обикновена парола във вашата база данни, няма смисъл да потвърждавате паролата в базата данни. Защото първо трябва да хеширате паролата и след това да я запазите. хешираната парола ще бъде сложен низ, който най-вероятно ще премине проверката, за да бъде запазен в базата данни.

Така че трябва да потвърдите паролата от страна на клиента. за това можете да използвате пакета joi npm.

https://www.npmjs.com/package/@hapi/joi

ето как можете да го приложите.

userModel.js //трябва да е в папката models

 const Joi = require('@hapi/joi');
 const mongoose = require("mongoose");

 //you defined your schema above, it should be **lowercase** 
 //here is the model, model should start capital letter 
 const User=mongoose.model("User",userSchema)

function validateUser(user) {
  const schema = Joi.object().keys({
    email: Joi.string()
      .min(8)
      .max(50)
      .required()
      .email(),
    password: Joi.string()
      .min(6)
      .required()
      .max(20)
      .regex(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,1024}$/) //special/number/capital
  });
  return Joi.validate(user, schema);
}

module.exports.User = User;
module.exports.validate = validateUser;

ще демонстрирам как да използвате тази функция в пощенски рутер.

userRoute.js

//import model and validate func
const { User, validate } = require("/models/user"); 

router.post("/", async (req, res) => {
  //validating the request here
  const { error } = validate(req.body);
  if (error) res.status(400).send(error.details[0].message);

  //i used this code to show you how to use validate function
  //i am not sure what is your project about
  });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Свързване на MongoDB от мобилно или базирано на браузър приложение

  2. Имената на полетата FieldPath не могат да съдържат '.' когато се опитвате да използвате AGGREGATE

  3. Защо този db.eval -> array.push би се изпълнил два пъти за определени записи?

  4. Заявка, базирана на изчислени полета с Mongoid

  5. Произволна извадка от MongoDB, връщаща силно изкривени резултати