Express通过Mongoose保存表单数据到MongoDB时字段丢失问题求助
问题原因
你HTML表单的input、textarea标签的name属性使用了中文全角引号(”),而非标准的英文半角引号("),浏览器解析时会把中文引号识别为name值的一部分,导致提交到后端的字段键名实际为”title”、”body”,和你预期的title、body不一致。
你使用的Mongoose会自动过滤不符合Schema定义的字段,因此这两个异常键名的字段不会被识别存入数据库,最终仅保留系统自动生成的_id和__v字段。
解决方案
将表单标签的name属性引号替换为英文半角引号即可:
修改前错误代码
<input type="text" class="form-control" placeholder="Title" id="title" name=”title”> <textarea rows="5" id="body" name=”body” ></textarea>
修改后正确代码
<input type="text" class="form-control" placeholder="Title" id="title" name="title"> <textarea rows="5" id="body" name="body" ></textarea>
修改后重新提交表单,后端即可正常拿到title、body字段,MongoDB也会正常存入对应业务字段。
内容的提问来源于stack exchange,提问作者user3567761
相关产品推荐
相关产品推荐

