Node.js Express POST 仅更改了路由器的输入
Posted
技术标签:
【中文标题】Node.js Express POST 仅更改了路由器的输入【英文标题】:Node.js Express POST only changed inputs to router 【发布时间】:2017-07-11 12:07:33 【问题描述】:情况就是这样——我有一个使用 mysql 数据库的 node.js + Express 应用程序。我从表中读取数据(例如员工)。我在 html 表单中显示必要的数据。所以员工姓名、电子邮件、电话、地址等。
在表单中,用户可以更新所有或选定的字段并点击提交以更新记录。
更新时我调用我的路由器并使用 body-parser 读取表单输入:
<form role="form" action="/employee/update" method="post">
Name : <input type="text" name="ename"/>
Email : <input type="email" name="empEmail"/>
.
.
.
</form>
现在用户可以更改所有输入或仅更改一个。但是,当我执行 sql 更新时,我只想更新已更改的字段。
我目前的解决方案
我现在要做的是,我在表单中有一个隐藏的输入,用于存储用户更改的任何输入的名称。因此,在我的公共 js 文件中,jquery 代码 onchange of input 读取已更改输入的“名称”属性并创建一个逗号分隔的字符串,然后将其分配给隐藏的输入作为值。
因此,如果用户更改姓名和电子邮件,隐藏的输入将如下所示:
<input type="hidden" name="FormHiddenInput" value="ename,empEmail"/>
所以当用户点击提交时,我只是在我的路由器上这样做:
var fieldName = req.body.FormHiddenInput;
然后我将其拆分并提取已更改的各个字段的名称并再次对其执行 req.body。
这个过程工作得很好,但我不喜欢它。它需要太多的代码,并且会通过 for 循环。
是否有另一种方法我只能直接在路由器中获取实际在表单中更改的输入/文本区域/选择等的名称?
【问题讨论】:
【参考方案1】:您应该更新整行。它减少了代码的冗长和复杂性,而且开销可以忽略不计。
mysql UPDATE statement - overhead for same values?
【讨论】:
以上是关于Node.js Express POST 仅更改了路由器的输入的主要内容,如果未能解决你的问题,请参考以下文章
Node.js + Express POST 请求返回未定义
从 POST 访问中隐藏 Node.js&Express 中的错误消息