单选框输入存储"on"而非指定性别值,添加enum后触发验证错误求助
解决Radio按钮提交后数据库存储"on"而非预期性别值的问题
问题根源
你的radio输入框未设置value属性,浏览器提交未指定value的radio时,会默认发送字符串"on",这直接导致数据库存储错误值,后续添加enum验证时自然触发不匹配的ValidationError。
修复前端代码
需要给每个radio按钮添加对应的value属性,同时修正label的for属性与input的id关联(提升交互体验):
<label for="gender-female">Female</label> <input type="radio" name="gender" id="gender-female" value="female"> <label for="gender-male">Male</label> <input type="radio" name="gender" id="gender-male" value="male"> <label for="gender-trans">Transgender</label> <input type="radio" name="gender" id="gender-trans" value="transgender"> <span class="formerror"></span>
关键修改说明
- 每个radio的
value属性设置为你预期存储的字符串:"female"、"male"、"transgender",提交时会把选中选项的value传给后端 - 修正label的
for属性与对应radio的id一致,这样点击标签文字就能选中对应的radio选项,优化用户操作
后端验证
你当前的Mongoose Schema enum配置是正确的:
gender: { type: String, enum: ["female", "male", "transgender"], required: true },
修复前端后,提交的gender值会完全符合enum规则,不会再触发ValidationError,数据库也会存储预期的性别字符串。
内容的提问来源于stack exchange,提问作者Adin Shahab
相关产品推荐
相关产品推荐

