zholla
@zholla
Student of PSU

Как вывести данные пользователя в Node js + Express, MongoDB?

Привет!!! Нужна помощь!!!
Пользователь регается на сайт и заполняет данные для личного кабинета, и в след раз при авторизации его данные выводится на личный кабинет! Не пойму как это сделать
Строго не судите, я только новичок
  • Вопрос задан
  • 562 просмотра
Решения вопроса 1
kiidii_aniname
@kiidii_aniname
Node.JS Developer
Ну смотри, я думаю совет, посмотреть в ютубе тебя не интересует, но вкратце вот алгоритм:

Регистрация:
1) Фронт отправляет на бэк POST запрос с данными, которые ввел юзер.
2) Бык выносит данные пользователя в отдельную переменную(к примеру user), т.к. нужно будет с этими данными в будущем работать и желательно это делать в отдельной переменной.
3) Бэк проверяет данные на валидность, например, что нет не нужных символов в пароле, или что почта валидная
4) Бэк с помощью bcryptjs шифрует пароль юзера и заменяет то, что ввёл юзер, на то, что выдаёт модуль bcryptjs (помните, что меняем только данные в созданной переменной (к примеру user), а не данные, которые которые прилетели POST запросом)
5) Бэк генерирует accessToken и сохраняет в нашу переменную с данными юзера (к примеру user) (можно тот-же bcryptjs для этого конечно юзать, но в будущем советую поискать что-то ещё)
6) Бэк отправляет запрос на монго, чтобы сохранить юзера в базе данных
7) Бэк отправляет на фронт accessToken юзера, который нужно сохранить в куки


Теперь, что касается получения данных:
1) Фронт отправляет на бэк GET запрос получения данных юзера. При этом отправляя куки, которые мы сохранили ранее
2) Бэк отправляет запрос в монгу, на поиск юзера по accessToken в базе данных
3) Бэк возвращает на фронт данные юзера полученные из монги
4) Фронт эти данные показывает юзеру


Что касается авторизации:
1) Фронт отправляет POST запрос на бэк с введёнными юзером email и паролем.
2) Бэк отправляет запрос в монгу, на поиск юзера по email
3) Бэк с помощью bcryptjs.compareSync() проверяет совпадают ли пароль полученные из базы данных с тем, что ввёл юзер
4) Бэк возвращает на фронт accessToken юзера, который нужно сохранить в куки


Несколько замечаний:
1) email должен быть уникальным, двух юзеров с одним email быть не должно, поэтому если вы используете mongoose - укажите "unique: true" в схеме юзера
Пример:
const userSchema = new Schema({
  email: {
    type: String,
    unique: true,
  }
});


2) mongoose вам очень поможет во взаимодействии с MongoDB

Вопросы есть?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект