Node.js ошибка: "undefined Функция обратного вызова не задана" - PullRequest
0 голосов
/ 31 марта 2020

В настоящее время я изучаю React, следуя курсу, в котором мы создаем приложение для проката видео. Код бэкэнда предоставляется инструктором, и наша задача - подключить интерфейс к бэкэнду. При отправке регистрационной формы в приложении я получаю следующую ошибку в Git Bash, где я запустил сервер: «undefined Функция обратного вызова не задана».

Я считаю, что эта проблема должна делать с bcrypt (инструктор использовал bcrypt- nodejs для шифрования паролей). Поскольку bcrypt- nodejs устарел, я установил bcrypt js и прочитал документацию. однако, я не знаю, как изменить код, чтобы он работал.

Если бы кто-то мог помочь мне с этим, я был бы очень признателен. Я относительно новичок в веб-разработке и пытаюсь заставить этот код работать.

Большое спасибо.

Ниже серверной части, которая взаимодействует с формой регистрации:

const bcrypt = require("bcrypt-nodejs");
const _ = require("lodash");
const { User, validate } = require("../models/user");
const express = require("express");
const router = express.Router();

router.get("/", async (req, res) => {
  const users = await User.find();
  res.send(users);
});

router.get("/me", auth, async (req, res) => {
  const user = await User.findById(req.user._id).select("-password");
  res.send(user);
});

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

  let user = await User.findOne({ email: req.body.email });
  if (user) return res.status(400).send("User already registered.");

  user = new User(_.pick(req.body, ["name", "email", "password"]));
  const salt = await bcrypt.genSalt(10);
  user.password = await bcrypt.hash(user.password, salt);
  await user.save();

  const token = user.generateAuthToken();
  res
    .header("x-auth-token", token)
    .send(_.pick(user, ["_id", "name", "email"]));
});

module.exports = router;

1 Ответ

0 голосов
/ 31 марта 2020

Правильный способ использования bcrypt.gensalt заключается в следующем:

bcrypt.genSalt(saltRounds, function(err, salt) {
    bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
        // Store hash in your password DB.
    });
});

Здесь function(err, salt) обозначает функцию обратного вызова.

Вот ссылка для более подробной информации о bcrypt и о обратном вызове

...