HTTP PUT-запрос в Expressjs - PullRequest
       8

HTTP PUT-запрос в Expressjs

0 голосов
/ 05 ноября 2018

Я пытаюсь выполнить запрос PUT, используя идентификатор элемента (/ UpdateTodo /: id) в expressjs, но в соответствии с моим кодом, на самом деле я просто добавляю новый набор json, который может иметь такой же Я бы.

Вот коды для лучшего понимания:

app.put('/UpdateTodo/:id', function (req, res) {

  var date = new Date();
  var _id = 0;

  if (todoList.length > 0) {
    _id = todoList[todoList.length - 1].id + 1;
  }

  var dt = date.toLocaleString();

  req.params.id = Number(req.params.id);

  var todoitem = { id: req.params.id, item: req.body.item, createdTime: dt, completedTime: "", status: "new" };

  todoList.push(todoitem);
  res.send(todoitem);
});

Мой app.post работает как положено:

app.post('/InsertTodo', function (req, res) {

  var date = new Date();
  var _id = 0;

  if (todoList.length > 0) {
    _id = todoList[todoList.length - 1].id + 1;
  }

  var dt = date.toLocaleString();

  var todoitem = { id: _id, item: req.body.item, createdTime: dt, completedTime: "", status: "new" };

  todoList.push(todoitem);
  res.send(todoitem);
});

postman put result

В общем, мой вопрос: как мне обновить элемент на основе идентификатора вместо добавления другого элемента, который может иметь такой же идентификатор?

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш запрос PUT должен попытаться найти существующий элемент с тем же идентификатором, прежде чем обновлять его. Если он не существует, он должен его создать.

Например:

const item = todoList.find(item => item.id === req.params.id);
if (item) { ... }

Вместо использования массива для хранения ваших предметов (todoList) вы можете использовать Map . Выполнение Map.get() и Map.set() может сделать это интересным опытом обучения.

Еще один совет: ваши маршруты не должны быть сформулированы иначе. Метод HTTP (PUT, POST и т. Д.) Сделает их уникальными, поэтому вместо

  • app.put('/UpdateTodo
  • app.post('/InsertTodo

Просто сделай

  • app.put('/todo, function(req, res) { ... });
  • app.post('/todo, function(req, res) { ... });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...