NodeJS Получить форму не возвращает ничего - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь отправить некоторые данные из формы, вложенной в. Я предоставлю код и объясню это. EJS:

<%if (projects[i].status == "Created") {%>
<td>
   <form method="get" action="/updateEngineer/<%=projects[i]._id%>">
      <select name="eng">
         <% for(var k = 0; k < engineers.length; k++){%>
         <option value="teeeest"> <%=engineers[k].local.email%></option>
         <%}%>
      </select>
      </br><a   type="submit"href="/updateEngineer/<%=projects[i]._id%>"class="btn btn-success">Update Engineer</a>
   </form>
</td>
<%}%>

И я попал на мою серверную сторону:

router.get('/updateEngineer/(:id)', function(req, res, next){

      var o_id = new ObjectId(req.params.id).toString();
      console.log(req.body.eng);
      db.collection('projects').find({
        "_id": ObjectId(o_id).toString
      }).toArray(function(err, results) {

        for (var i = 0; i < results.length; i++) {

          if (results[i]._id == o_id) {

            console.log(results[i]);



            db.collection('projects').updateOne({
              "_id": results[i]._id
            }, {

              $set: {
                "engineerEmail": req.body.eng
              }

            }, function(err) {

              console.log("success");
              res.redirect('/projects');
            });
          }

        }
      });
 })

Он успешно вызывает эту программу, но когда я печатаю, req.body.eng возвращает неопределенное значение, а когда я печатаю req.body, он возвращает {}. Я не уверен, почему это не работает, поэтому любая оценка этого будет принята с благодарностью

1 Ответ

0 голосов
/ 27 апреля 2018

Ваш метод формы GET, который отправляет данные формы в качестве параметров URL. Вы можете получить к нему доступ в вашем обработчике маршрута как req.query.

Но вы должны использовать POST метод для получения данных в req.body.

...