node.js - 未处理的拒绝 CastError:模型“用户”的路径“电子邮件”中值“{电子邮件:'test@g mail.com'}”的字符串转换失败
问题描述
这个错误对我尝试进行 resetPasswordRequest 意味着什么,但是每当我尝试提交电子邮件以获取 mailtrap.io 上的重置链接时,微调器会继续加载,并且此错误会出现在终端上。
Unhandled rejection CastError: Cast to string failed for value "{ email: 'test@g
mail.com' }" at path "email" for model "User"
at new CastError (C:\projects\bookworm\bookworm-api\node_modules\mongoose\li
b\error\cast.js:27:11)
at SchemaString.cast (C:\projects\bookworm\bookworm-api\node_modules\mongoos
e\lib\schema\string.js:476:9)
at SchemaString.SchemaType._castForQuery (C:\projects\bookworm\bookworm-api\
node_modules\mongoose\lib\schematype.js:1088:15)
at SchemaString.castForQuery (C:\projects\bookworm\bookworm-api\node_modules
\mongoose\lib\schema\string.js:531:15)
at SchemaString.SchemaType.castForQueryWrapper (C:\projects\bookworm\bookwor
m-api\node_modules\mongoose\lib\schematype.js:1045:15)
at cast (C:\projects\bookworm\bookworm-api\node_modules\mongoose\lib\cast.js
:214:34)
at model.Query.Query.cast (C:\projects\bookworm\bookworm-api\node_modules\mo
ngoose\lib\query.js:3305:12)
at model.Query.Query._castConditions (C:\projects\bookworm\bookworm-api\node
_modules\mongoose\lib\query.js:1295:10)
at model.Query.Query._findOne (C:\projects\bookworm\bookworm-api\node_module
s\mongoose\lib\query.js:1507:8)
at C:\projects\bookworm\bookworm-api\node_modules\kareem\index.js:250:8
at C:\projects\bookworm\bookworm-api\node_modules\kareem\index.js:23:7
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
这些是我的文件
路由器/auth.js
router.post('/reset_password_request', (req, res) => {
User.findOne({ email: req.body.email }).then(user => {
if (user) {
sendResetPasswordEmail(user);
res.json({});
} else {
res.status(400).json({ errors: { global: 'There user with such email' } })
}
});
});
模型/User.js
schema.methods.generateResetPasswordToken = function generateResetPasswordToken() {
return jwt.sign({
_id: this._id
}, process.env.KEY,
{ expiresIn: '1s' });
}
schema.methods.generateResetPasswordLink = function generateResetPasswordLink() {
return `${process.env.HOST}/reset_password/${this.generateResetPasswordToken()}`
}
解决方案
推荐阅读
- javascript - 如何创建用户验证哈希/令牌?
- angularjs - Angularjs UI-Grid 右键单击不再起作用?
- android - 如何使 BottomAppBar 的浮动操作按钮透明?
- python - Python Pandas 数据透视表按 match_id 分组
- asp.net - 将 HTML 转换为 PDF 并附加到电子邮件 .NET
- c# - 在 LinqPad 中定义的类型不能被 Newtonsoft Json 序列化程序反序列化
- javascript - CKEDITOR 正在覆盖样式
- python - 格式化和捕获 sys.exc_info 错误消息
- python-3.x - 运行 preprocess.py 时出错
- python - 具有 bin 和聚合的 Pandas Groupby