SyntaxError: неожиданный токен = в JSON в позиции 11 в JSON .parse (<anonymous>) - PullRequest
0 голосов
/ 18 июня 2020

Я не могу понять, почему это происходит, когда я отправляю запрос через Insomnia с использованием метода PUT. Я пытаюсь поместить новый заголовок в объект, который находится в массиве projects [], но это не работает. Это код JS:

const express = require('express');

const server = express();

server.use(express.json());

const projects = [];

server.post('/projects', (req, res) => {
  const { id, title } = req.body;

  const project = {
    id, 
    title,
    tasks: []
  };

  projects.push(project);

  return res.json(project);
})

server.get('/projects', (req, res) => {
  return res.json(projects);
})

server.put('/projects/:id', (req, res) => {
  const { id } = req.params;
  const { title } = req.body;

  for (let i = 0; i < projects.length; i++) {
    if(projects[i].id == id){
      projects[i].title = title;
    }
  }

  return res.json(project);
})

server.delete('/projects/:id', (req, res) => {
  const { id } = req.params;

  const projectIndex = projects.findIndex(p => p.id == id);

  projects.splice(projectIndex, 1);

  return res.json(projects);
})

server.listen(3000);

Это запрос, который я отправил:

{
    "title" = "new title"
}

Это мои зависимости разработчика :

"dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Отправляемый вами запрос недействителен. Вы использовали = в json. Это должно быть colan (:): замените это на:

{
    "title" : "new title"
}

Надеюсь, это сработает!

0 голосов
/ 18 июня 2020

Ваш массив Projects пуст, что означает, что код внутри l oop никогда не будет выполнен.

const projects = [{ id: 2, title: "old title" }];
app.put("/projects/:id", (req, res) => {
    const { id } = req.params;
    const { title } = req.body;
    for (let i = 0; i < projects.length; i++) {
        if (projects[i].id == id) {
            projects[i].title = title;
        }
    }

    res.send(projects);
});

После изменения кода, который вы разместили для этого, и отправки запроса на размещение /projects/2 с тело {"title": "new title"}

Ответ

[
  {
    "id": 2,
    "title": "new title"
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...