从表中编辑项目时,它会提取/保存错误的信息



所以,我正在开发一个 CRUD 应用程序,我正在尝试制作它,以便在单击编辑时可以编辑项目。我可以使用 req.params.id 成功获取项目 ID,并且它已成功将正确的信息打印到控制台中,但是当我将其发送到前端时,它仍在更新集合中第一个条目的信息。下面是我用于此目的的代码。后端:

router.get('/edit/(:id)', function (req, res, next) {
   var o_id = new ObjectId(req.params.id).toString();
   db.collection('projects').find({
     "_id": ObjectId(o_id).toString
   }).toArray(function (err, result) {
     if (err) return console.log(err)
     // if user not found
     if (!result) {
       req.flash('error', 'Project not found with id = ' + req.params.id)
       res.redirect('/projects')
     } else { // if user found
       console.log(result);
       // render to views/user/edit.ejs template file
       res.render('edit.ejs', {
         user: req.user,
         title: 'Edit User',
         //data: rows[0],
         projID: result[0]._id,
         projName: result[0].projectName,
         projStat: result[0].status,
         projEngineer: result[0].engineer,
         projCost: result[0].finalCost
       });
     }
   });
 });

列出项目的前端:

<tbody>
  <form action="/edit/<%=projID%>" method="post" class="d-flex align-self-center mx-auto" style="width:500px;height:500px;padding:0px;margin:0px;background-color:rgb(255,255,255);">
    <tr>
      <td>
        <input type="text" class="form-control" name="projName" value="<%=projName %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projStat" value="<%=projStat %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projEngineer" value="<%=projEngineer %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projCost" value="<%=projCost %>">
      </td>
    </tr>
    <button class="btn btn-primary btn-block" type="submit" style="background-color:rgb(4,148,74);">Submit</button>
  </form>
</tbody>

用于编辑的前端

<tbody>
  <form action="/edit/<%=projID%>" method="post" class="d-flex align-self-center mx-auto" style="width:500px;height:500px;padding:0px;margin:0px;background-color:rgb(255,255,255);">
    <tr>
      <td>
        <input type="text" class="form-control" name="projName" value="<%=projName %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projStat" value="<%=projStat %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projEngineer" value="<%=projEngineer %>">
      </td>
      <td>
        <input type="text" class="form-control" name="projCost" value="<%=projCost %>">
      </td>
    </tr>
    <button class="btn btn-primary btn-block" type="submit" style="background-color:rgb(4,148,74);">Submit</button>
  </form>
</tbody>

所以我解决了我的问题,我查询数据库的方式返回了所有对象,我只需要遍历它并找到 id 匹配的位置。感谢@andreiNikolaenko指出检查这一点。

最新更新