Переданный аргумент должен быть одной строкой из 12 байтов или строкой из 24 шестнадцатеричных символов - PullRequest
0 голосов
/ 22 декабря 2019

Я хочу обновить базу данных mongodb, используя метод PUT. Я установил переопределение метода и включил его, но все еще получаю сообщение об ошибке:

Передаваемый аргумент должен содержать одну строку из 12 байтов или строку из 24 шестнадцатеричных символов.

Код ниже:

//UPDATE ROUTE 
app.put("/blogs/:id", function(req, res){
   //let id = req.params.id;
   //let newData = req.body.blog;
   Blog.findByIdAndUpdate(req.params.id, req.body.blog, function(err, updatedBlog){
      if (err){
         console.log(err);
         //res.redirect("/blogs");
      } else {
         res.redirect("/blogs/" + id);
      }
   });
});

файл ejs

<%- include('partials/header'); -%>

    <div class="ui main text container segment" style="margin-top: 7.0em;">
       <div class="ui huge header">Edit <%= blog.title %> </div>
       <!--HTML does not support PUT request, we have to use 
       Method-Override by adding ?_method=PUT-->
       <form class="ui form" action="/blogs/ <%= blog._id %>?_method=PUT" method="POST">
          <div class="field">
             <label for=""><Title></Title></label>
             <!--Using value attribute instead of placehold to retrieve the data from the database-->
             <input type="text" name="blog[title]" value="<%= blog.title %>">
          </div>
          <div class="field">
             <label for="">Blog Image</label>
             <input type="text" name="blog[image]" value="<%= blog.image %>">
          </div>
          <div class="field">
             <label for="">Blog Content</label>
             <textarea name="blog[body]" id="" cols="30" rows="10"> <%= blog.body %></textarea>
          </div>
          <input class="ui violet basic button" type="submit">
       </form>
    </div>


    <%- include('partials/footer'); -%>

1 Ответ

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

Вы должны установить код, как показано ниже, потому что мы используем findByIdAndUpdate, поэтому мы должны установить некоторое значение для обновления.

app.put("/blogs/:id", function(req, res){
    Blog.findByIdAndUpdate(req.params.id, {
        $set: {
            title: req.body.blog.title,
            image: req.body.blog.image,
            body:  req.body.blog.body
        }
    }, function(err, updatedBlog){
        if (err){
            console.log(err);
            //res.redirect("/blogs");
        } else {
            res.redirect("/blogs/" + id);
        }
    });
});
...