идентификатор объекта, возвращаемый с помощью флажка, добавляет дополнительное пространство в строку идентификатора

#javascript #database #mongoose #ejs #objectid

Вопрос:

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

было бы здорово узнать, в чем причина этого.

код ejs, в котором флажок возвращает элемент._id

         <form action="/delete" method="POST">
        <div class="item">
          <input type="checkbox" name="checkbox" value="<%=item._id%> " onchange="this.form.submit()">
          <p><%=  item.name  %></p>
        </div>
      </form>
      <% }) %>
 

app.js код для /удаления маршрута запроса на публикацию

 app.post("/delete", function(req, res){

  let checkedItemId = req.body.checkbox;
  console.log(checkedItemId   "hii");  // outputs: 60dd7cafc9bfd91808c706a6 hii
                                       // expected: 60dd7cafc9bfd91808c706a6hii

  Item.findByIdAndRemove(checkedItemId, function(err) {
    if(!err) {
      console.log("successfully deleted item");
    } else {
      console.log(err);
    }
  });

  res.redirect("/");

});
 

Ответ №1:

value="<%=item._id%> " это пространство и является причиной проблемы. Убери его, и все будет в порядке.