express-validator

path: courses/express-node/express-validator.md

- **fileName**: express-validator
- **Created on**: 2024-06-29 05:07:39

installation :

npm install express-validator

express validator is package for validator the data from server before go to the logic for the endpoint example :


import express from 'express';
import { body, validationResult } from 'express-validator';
const app = express();


app.get('/hello', body('username').notEmpty().isString(), (req, res) => {
  const result = validationResult(req);
  if (!result.isEmpty()) {
    res.send({ errors: result.array() });
  }
    return res.send(`Hello`);
});

app.listen(3000);

better way for validator using checkScheme() bulit in function:
export const vaildatorSign = {
  username: {
    isLength: {
      options: {
        min: 3,
        max: 30,
      },
      errorMessage: "not vaild username info",
    },
    notEmpty: {
      errorMessage: "username is required"
    },
    isString: {
      errorMessage: "username must be string"
    },
    unique: {
      errorMessage: "username must be unique"
    },
  },
};


import express from 'express';
import { validationResult, checkSchema } from 'express-validator';
const app = express();
import { validatorSign } from 'validator.mjs'


app.get('/hello',checkSchema(vaildatorSign), (req, res) => {
  const result = validationResult(req);
  if (!result.isEmpty()) {
    res.send({ errors: result.array() });
  }
    return res.send(`Hello`);
});

app.listen(3000);
app.post("/api/auth", body("username")
    .notEmpty().withMessage("the username is empty not valid")
    .isString({ maxAge: { min: 3, max: 30 } })
    .withMessage("not valid username its must be between 3 and 30 characther"),
    body("password").notEmpty().withMessage("the password is empty not valid")
    , (request, response) => {
        const resutls = validationResult(request)
        console.log(resutls);
        const { body: { username, password } } = request;

        if (!resutls.isEmpty()) return response.status(400).send({ erorr: "error in username or password" });
        const findUser = infoUser.find((user) => user.username === username && user.password === password);
        if (!findUser) return response.status(401).send("error in username or password");

        request.session.user = findUser;
        // restore the data from post request in data
        const data = matchedData(request);
        console.log(data)
        response.status(200).send({ msg: "welcome in our app", findUser });
    })

continue:db-session.md
before:dotfiles.md