You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EJS隐藏输入传递ObjectId触发BSON CastError问题排查

解决MongoDB Cast to ObjectId失败的BSONError问题

问题原因

你在EJS隐藏输入框的value属性里,给<%= result._id %>前后加了空格,导致提交到后端的userid是带前后空格的字符串。MongoDB的ObjectId要求是纯净的十六进制字符串,带空格的字符串无法被正确转换,所以抛出了BSONError。

解决方法

  1. 修正EJS隐藏框代码
    直接去掉value里的多余空格,确保传递的是纯净的ObjectId字符串:
<input type="hidden" name="userid" value="<%= result._id %>">
  1. 后端额外容错处理(可选)
    如果担心前端可能出现其他意外空格,可以在formController接收参数时先去除前后空格:
const userId = req.body.userid.trim();
// 再用处理后的userId创建Form数据

这样就能避免Cast to ObjectId的转换错误,同时保证数据正常存入数据库。

内容的提问来源于stack exchange,提问作者Riya Bhanvadia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:54:50