首页 > 解决方案 > 未处理的拒绝 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()}`
}

标签: node.jsreactjsapimongooseredux

解决方案


推荐阅读