SyntaxError: неожиданный токен} в JSON в позиции - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь создать маршрут для регистрации, используя passportjs.По запросу, используя почтальон, я получаю эту ошибку: SyntaxError: Неожиданный токен} в JSON в позиции 119
в JSON.parse ()

Ниже приведен мой код:

const express = require("express");
const router = express.Router();
const gravatar = require("gravatar");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const keys = require("../config/keys");
const passport = require("passport");
//load input validation
const validateRegisterInput = require("../validation/register");
//user model
const User = require("../models/User");

router.get("/test", (req, res) => res.json({ msg: "user route works" }));

//post - api/users/register
router.post("/register", (req, res) => {
  const { errors, isValid } = validateRegisterInput(req.body);
  //check validation
  if (!isValid) {
    return res.status(400).json(errors);
  }
  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      errors.email = "Email already exists";
      return res.status(400).json(errors);
    } 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,
        password: req.body.password,
        avatar
      });


      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));
        });
      });
    }
  });
});

module.exports = router;

Ниже мой запрос с использованием почтальона:

{
  "name":"Harry",
  "email": "harrypotter@gmail.com",
  "password" : "harry",
  "avatar" : "https://image.jpg",
}

1 Ответ

0 голосов
/ 24 декабря 2018

Согласно вашему коду, вам необходимо отправить password2 в теле.Поэтому используйте ниже curl для запроса, и все будет в порядке.

curl -X POST \ http://localhost:8080/api/users/register \ -H 'Cache-Control: no-cache' \ -H 'Содержимое-Тип: application / json '\
-H' Почтальон-токен: c437c084-def1-427f-bf43-33b92a747244 '\ -d' {"name": "Harry", "email": "harrypotter @ gmail.com "," password ":" harry12 "," password2 ":" harry12 "," avatar ":" https://image.jpg"} '

...