node.js - NodeJS获取表单没有返回任何东西
问题描述
我正在尝试从嵌套的表单中发送一些数据。我将提供代码并解释它。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 返回 undefined 并且当我打印 req.body 时它返回一个 {}。我不确定为什么它不起作用,所以对此的任何见解将不胜感激
解决方案
您的表单方法GET
会将表单数据作为 url 参数发送。您可以在路由处理程序中以req.query
.
但是你应该使用POST
方法来获取数据req.body
。
推荐阅读
- ios - 无法呈现和更新自动布局状态:无法启动可设计代理,因为工具正在关闭
- caching - 雪花仓库缓存
- reactjs - 构建 REACT NATİVE 后的 EXPO 推送通知
- prisma - Nexus 字段解析器父类型不可为空
- python - For 和 while 循环输出比它应该更长的列表
- python - Pandas 在 GroupBy 对象上应用 sort_values 不会返回分组的 DataFrame
- python - 为使用`python -m zipapp`创建的独立应用程序导入模块的正确方法是什么?
- reactjs - 更新 Apollo 缓存中的项目
- recursion - 需要帮助理解 lisp 函数
- python - 是否可以从我的用户模型中覆盖“is_active”方法?