Мое тело запроса показывает пустой или неопределенный в API узла - PullRequest
1 голос
/ 08 октября 2019

Это API, который я использую для проверки своего логина, но он не получает правильное тело запроса.

Это мой файл сервера / индекса, к которому я подключился с MongoCloud.

 const express = require("express");
const mongoose = require("mongoose");
const users = require("./routes/api/users");
const profile = require("./routes/api/profile");
const posts = require("./routes/api/posts");
const app = express();
const bodyParser = require("body-parser");


// DB Config
const db = require("./config/keys").mongoURI;
// Connect Mongo
mongoose
  .connect(db, { useNewUrlParser: true })
  .then(() => console.log("Mongo is connected"))
  .catch(err => console.log(err));
// var MongoClient = require("mongodb").MongoClient;


//Enabling body parser
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

app.get("/", (req, res) => res.send("Hello!"));

app.use("/api/users", users);
app.use("/api/posts", posts);
app.use("/api/profile", profile);

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server is running on port ${port}`));

Это файл маршрута, в котором присутствует API для регистрации и входа в систему пользователя.

    const express = require("express");
const router = express.Router();
const gravatar = require("gravatar");
const bcrypt = require("bcryptjs");

const User = require("../../models/User");
// @Route GET api/users/test
// desc test users route
// access public
router.get("/test", (req, res) => res.json({ msg: "users works" }));

// @Route POST api/users/register
// desc register a user
// access public
router.post("/register", (req, res) => {
  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      return res.status(400).json({ email: "email already exists" });
    } else {
      const avatar = gravatar.url(req.body.email, {
        s: "200", //size
        r: "pg", //rating
        d: "mm" //default
      });

      const newUser = new User({
        name: req.body.name,
        email: req.body.email,
        avatar,
        password: req.body.password
      });
      bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(newUser.password, salt, (err, hash) => {
          if (err) throw err;
          newUser.password = hash;
          newUser
            .save()
            .then(user => res.json(user))
            .catch(err => console.log(err));
        });
      });
    }
  });
});

// @Route POST api/users/login
// desc Login User/Returning JWT(json web token)
// access public

router.post("/login", (req, res) => {
  const email = req.body.email;
  const password = req.body.password;
  //Find user by email

  User.findOne({ email }).then(user => {
    if (!user) {
      return res.status(404).json({ email: "user not found" });
    } else {
      //Check Password
      bcrypt.compare(password, user.password).then(isMatch => {
        if (isMatch) {
          res.json({ msg: "Success" });
        } else {
          return res.status(400).json({ password: "Incorrect Password" });
        }
      });
    }
  });
});

module.exports = router;

Я пишу подобный вид API для регистрации моего пользователя, который работает отлично.

1 Ответ

1 голос
/ 08 октября 2019

Я думаю, вам нужно экспортировать файл маршрута и использовать его в index.js, как показано ниже.

index.js

const express = require("express");
const app = express();
const authRoute = require("./authRoute");

app.use(express.json());

app.use("/auth", authRoute);

const port = process.env.PORT || 3000;
app.listen(port, () => console.log("Listening"));

И ваш файл маршрута, я назвал authRoute.js.

const express = require("express");
const router = express.Router();

router.post("/login", async (req, res) => {
  console.log(req.body);
  res.send(req.body);
});

module.exports = router;

С их помощью вы можете читать req.body, еслиВы отправляете почтовый запрос на свою конечную точку / авторизацию / логин. Например, если используется localhost: 3000:

http://localhost:3000/auth/login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...