В этой статье мы разберём как в node.js express.js создаётся регистрация, это очень полезная статья, особенно для новичков в программирование и Express.js.
Также, мы здесь будем работать с библиотекой Mongoose.js, и если вы её не знаете, то почитайте статью «Express.js работа с MongoDB».
Регистрация на Express.js:
Разберём как сделать регистрацию, но для начала создадим схему для управления базой данных, в нашем случае MongoDB. Заходим в папку «model» если её нет, то создаём, и делаем там файл «User.js». Вот что в нём пишем:
1 2 3 4 5 6 7 8 9 | const {Schema, model} = require('mongoose'); const Users = new Schema({ username: {type: String, required: true}, email: {type: String, unique: true, required: true}, password: {type: String, required: true}, }) module.exports = model('Users', Users) |
В начале мы подключаем класс Schema
, для создания схемы модели и функцию model
, которая создаёт объект нашей модели, благодаря ему мы и будем работать с ней.
После переходим в папку «controller» и в ней создаём файл «auth.js», там же создаём класс authController
:
1 2 3 4 5 6 | const bcrypt = require('bcryptjs'); const User = require('../models/User') class authController { ... } |
Также мы тут подключаем библиотеку bcrypt
для хеширования пароля и модель User
, ну и создаём класс.
Примечание:
Если вам что-то не понятно, то посмотрите наш учебник по Express.js.
Теперь создаём метод который будет у нас отвечать за регистрацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | async registration(req, res) { try { const {username, email, password} = req.body; const candidate = await Users.findOne({email}) if (candidate) { return res.json({message: 'User is email', code: 1}) } const hashPassword = bcrypt.hashSync(password, 10); const user = new Users({username, email, password: hashPassword}) await user.save(); return res.json(true) } catch (e) { console.log(e) res.status(400).json({message: 'Registration error'}) } } |
Во-первых мы делаем метод асинхронным, это нужно для работы с БД, во вторых мы начинаем отлавливать ошибки с помощью конструкции try catch
.
Внутри try
мы берём данные из req.body
, а конкретно имя пользователя, email и пароля, и первым делом проверяем, есть ли пользователь с таим Email, для этого используем метод модели findOne()
, который находит элементы в БД, если есть, то возвращаем ошибку, если нет то продолжаем работу.
Дальше создаём переменную в которой будем хранить хеш от пароля, для этого в него вернём значение из метода bcrypt.hashSync()
, в качестве параметров передаём пароль, который нужно хешировать и сложность хеширования, тут рекомендую. слишком большое число не ставить, иначе будет очень долго хешировать.
Потом создаём объект модели, тем самым мы создали нового пользователя, при создание передаём объект с нашими свойствами, это имя, email и хеш пароля, сохраняем это.
В catch
мы пишем вывод ошибок в консоль.
Примечание:
Для регистрации мы используем принцип RestAPI, то для отправки данных вы будите должны использовать AJAX.
После того как вы закончили с методом заходим в папку «router», и создаём файл «auth.js», там мы будем хранить пути для отправки или получения данных, вот что мы там пишем:
1 2 3 4 5 6 7 8 | const Router = require('express'); const controller = require('../controller/auth'); const router = new Router() router.post('/registration', controller.registration); module.exports = router |
Тут мы подключаем Router
, для правления путями и создаём объект router
, и также создаём проверки POST запросов, если у нас есть такой запрос по пути «/registration», то мы запускаем наш метод для регистрации, экспортируем объект.
Последние переходим в «index.js» в корневой папке и добавляем туда наш роутинг:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | const express = require('express'); const cors = require('cors') const mongoose = require('mongoose'); const auth = require('./router/auth') const PORT = process.env.PORT || 3000; const app = express() app.use(express.json()); app.use(cors()); app.use('/auth', auth); async function start() {...} start() |
Тут мы подключаем Express и cors, второй нам нужен для работы с back-end с помощью ReasAPI, чтобы её скачать пишем эту npm команду:
1 | npm install cors |
Ну и также подключаем Mongoose и маршрутизатор auth
, создаём приложение, для встраивания роутинга используем Middleware, создаём функцию start
, в которая будет запускать приложение и взываем её.
Теперь вы должны будите сделать клиентскую часть сайта, но это не об этом, ту мы рассматриваем только back-end, но я скажу, куда отправлять данные, вам надо будет по пути «http://exaple.com/auth/registration», это всё.
Вывод:
В этой статье вы узнали как создаться регистрация на Express.js, в следующей статье мы разберём как сделать авторизацию на Express, поэтому подписываетесь на соц-сети, чтобы не пропустить.