Предупреждение о необработанном отказе: Ошибка: ГДЕ параметр «username» имеет недопустимое «неопределенное» значение в postman

#node.js #express #routes #sequelize.js #postman

#node.js #экспресс #маршруты #sequelize.js #почтальон

Вопрос:

В настоящее время работает над серверной частью в nodejs для страницы входа. Я следую этому руководствуhttps://bezkoder.com/node-js-jwt-authentication-mysql /

Когда я пытаюсь перейти к http://localhost:8080/api/auth/signup в postman я получаю эти ошибки на своем сервере:

введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь

установите соответствующий заголовок: Content-Type: application / json, и я также установил тело из test в json в postman

Я полагаю, что это происходит из этого фрагмента кода, но остальная часть кода находится в ссылке github, если вам нужно больше кода.

Ссылка на Github:https://github.com/bezkoder/node-js-jwt-auth

В verifySignup.js:

  const db = require("../models");
 const ROLES = db.ROLES;
 const User = db.user;

 checkDuplicateUsernameOrEmail = (req, res, next) => {
 // Username
User.findOne({
 where: {
   username: req.body.username
  }
  }).then(user => {
  if (user) {
   res.status(400).send({
    message: "Failed! Username is already in use!"
   });
   return;
  }

 // Email
 User.findOne({
   where: {
    email: req.body.email
   }
  }).then(user => {
   if (user) {
    res.status(400).send({
       message: "Failed! Email is already in use!"
     });
    return;
   }

   next();
 });
});
};
  

В auth-routes.js мой запрос на регистрацию:

  app.post(
 '/api/auth/signup', 
 [
   verifySignUp.checkDuplicateUsernameOrEmail,
    verifySignUp.checkRolesExisted
  ],
 controller.signup
);
  

Server.js (весь код):

 const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");

const app = express();

 var corsOptions = {
 origin: "http://localhost:8081"
};



app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(bodyParser.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

// routes
require('./app/routes/auth.routes')(app);
require('./app/routes/user.routes')(app);

// database
const db = require("./app/models");
const Role = db.role;

//db.sequelize.sync();
// force: true will drop the table if it already exists
db.sequelize.sync({force: true}).then(() => {
console.log('Drop and Resync Database with { force: true }');
initial();
 });

// simple route
app.get("/", (req, res) => {
res.json({ message: "Welcome to bezkoder application." });
});



// set port, listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
 console.log(`Server is running on port ${PORT}.`);
});

 function initial() {
 Role.create({
  id: 1,
  name: "user"
 });

 Role.create({
  id: 2,
  name: "moderator"
 });

 Role.create({
  id: 3,
  name: "admin"
 });
 }
  

Комментарии:

1. Можете ли вы добавить текст вашего запроса к вопросу? Кроме того, вы настроили анализатор тела в своем экспресс-приложении?

2. Я добавил свой server.js и где я создаю route api для регистрации пользователя. Ссылка на Github находится здесь, если вам нужно больше кода: github.com/bezkoder/node-js-jwt-auth

3. Насколько я могу судить, это выглядит нормально. Можете ли вы добавить скриншот вашего запроса postman или просто curl ?

4. Я добавил скриншот в сообщения

Ответ №1:

Вы отправляете пустое тело запроса в своем запросе POST. Убедитесь, что передали объект со всеми необходимыми данными:

 {
  "username": "userNameToSignUp",
  "email": "email@address.com"
  // tbd - other fields you need
}
  

Ответ №2:

Я столкнулся с точной проблемой, с которой вы столкнулись, используя тот же код, и я исправил это, просто отправив запрос в формате JSON вместо текста. В интерфейсе POSTMAN перейдите на вкладку «Тело» и переключите «Текст» на «JSON»

Ответ №3:

Я реализовал этот код и добавил в него больше функциональности, что может помочь вам это репозиторий с большей функциональностью, и проблема в вашем приложении заключается в том, что вы отправляете пустой запрос post, который вызывает ошибку

 {
 "username": "UserName",
 "email": "email@address.com",
 "password" : "password"
 }
  

ссылка на код, которую вы указали, очень проста: вы раскомментируете initial() функцию каждый раз, когда я добавляю условие, поэтому, когда мы удаляем базу данных или запускаем приложение, вам не нужно комментировать или раскомментировать initial() функцию

Комментарии:

1. Это в основном то, что я уже предлагал, верно?

2. да, и я реализовал демонстрацию, о которой он упоминал выше