【问题标题】:getting same id result for all为所有人获得相同的 id 结果
【发布时间】:2019-10-29 00:50:45
【问题描述】:

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

如果我点击任何人的编辑按钮,它会得到与上图相同的值 路由器.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>

【问题讨论】:

    标签: node.js mongoose ejs


    【解决方案1】:

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

    【讨论】:

    • 而不是 line const { id } = req.params 我必须添加对象 id 的值
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2012-08-10
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多