所有人都获得相同的ID结果

时间:2019-06-14 11:25:51

标签: node.js mongoose ejs

我正在尝试编辑记录,但是单击“编辑”按钮会得到相同的结果。选择结果不会出现,而是每次都会出现第一个结果。我想获取有关单击编辑按钮的详细信息。 得到结果 enter image description here

如果我单击任何人的编辑按钮,它将获得与上图相同的值 enter image description here router.js

 router.get('/editCategory/:id', async (req,res,next) => {
      const { id }   = req.params;
      const categories = await Category.findById({_id: id });
      res.render('category', {
          categories
      });
      res.json(data);
    });

    router.post('/editCategory/:id', async (req,res,next) => {
      const  { id } = req.params;
      console.log(req.body);
      const ctgy = await Category.findOne(id);
        Object.assign(record, req.body);
        await ctgy.save();
        res.redirect('/category');
    });

category.ejs

<tbody>
      <% for(var i = 0; i <categories. length; i++) { %>   
       <tr>
         <td><%= i+1 %></td>
         <td><%= categories[i].category %></td>
         <td><%= categories[i].status %></td>
         <td>    
          <!-- Button trigger modal -->
         <button type="button" class="btn bg-blue-w rounded edit" data-toggle="modal" data-target="#changecategoryModal">Edit</button>

    <!-- Modal -->
       <div class="modal fade" id="changecategoryModal" tabindex="-1" role="dialog" aria-labelledby="changecategoryModalLabel" aria-hidden="true">
       <div class="modal-dialog" role="document">
       <div class="modal-content">
       <div class="modal-header">
       <h5 class="modal-title" id="changecategoryModalLabel">Modal title</h5>                                                                   
         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>

         </button>

         </div>

         <div class="modal-body">

           <form action="/edit/<%= categories[i]._id %>" method="post" enctype="multipart/form-data"  id="categoryform">

           <div class="form-group">

            <label class="label-text">change Category</label>
                                                                                            <input type="text" class="form-control" placeholder="Category" name="category" value="<%= categories[i].category %>">

           </div>

            <div class="form-group">

           <label class="label-text">Change image</label>

           <input type="text" class="form-control" placeholder="Category" name="category" value="<%= categories[i].status %>">
                                                                                            <!-- <input type="file" name="myimage" value=""> -->

           </div>

           </form>

           </div>

           <div class="modal-footer">

           <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>

           <input type="submit"  value="submit" class="btn bg-red rounded" form="categoryform">

             </div>

          </div>

        </div>
       </div>
      </div>
       <a href="/deleteCategory/<%= categories[i]._id %>" class="btn bg-grey rounded">Delete</a>

 </td>
  </tr>
<%  } %>     
</tbody>

1 个答案:

答案 0 :(得分:0)

错误在下面的行
  const {id} = req.params ;
当您尝试破坏req.params对象时,未设置 id 的值。这就是为什么查询每次都返回第一行文档的原因。 尝试记录 id 的值并检查。
在第二条路线中
const ctgy =等待Category.findOne(id);
findOne接受对象,例如:Category.findOne({_ id:id})