验证转换为数字失败

Posted

技术标签:

【中文标题】验证转换为数字失败【英文标题】:validation Cast to Number failed 【发布时间】:2019-08-13 08:45:32 【问题描述】:

我在路径 badidid 处收到验证错误,为什么当我在 badidid 是一个数字时得到它时会得到这个,而我保存的是一个数字?`

检查我已经检查过:

achievement 值为 5,

achievement 类型为数字

错误:

(node:8260) UnhandledPromiseRejectionWarning: ValidationError: achievement_users validation failed: badgeid: Cast to Number failed for value " badgeid: 0,
  progress: 0,
  _id: 5c94c04a758c8a204440499e " at path "badgeid"

保存代码:

  var achievement = new achivementUsers();
            achievement.badgeid = achievement;
            return achievement.save().then(function (response) 

架构:


    badgeid: type: Number, default: 0,
    progress: type: Number, default: 0,
    completed: type: Boolean, default: false,
    userid: type: String, default: 'No name',


【问题讨论】:

你正在制作一个圆形对象,成就.badgeid =成就;这肯定不会匹配架构 【参考方案1】:

您正在覆盖变量achievement。您正在使用新模型设置 achievement,因此您需要使用其他名称:

  //somewhere in the code `achievement` is 5
  var achievementUser = new achivementUsers();
  achievementUser.badgeid = achievement;
  return achievementUser.save().then(function (response) );

或者您可以在创建模型对象时初始化该值。但是对于不同的上下文使用不同的变量名仍然是一个好习惯。

 //somewhere in the code `achievement` is 5
  var achievement = new achivementUsers(
    badgeid: achievement
  );
  return achievement.save().then(function (response) );

【讨论】:

以上是关于验证转换为数字失败的主要内容,如果未能解决你的问题,请参考以下文章

mongoose .create 给 node.js “ValidationError:验证失败:转换为 [undefined] 值失败......”

将 varchar 转换为数字并仅显示数值时转换失败

Angular 在验证失败时使输入字段为空

验证失败:video_data.0._id:在路径 \"_ 处的值 \"\"(类型字符串)转换为 ObjectId 失败

数字签名/电子签名验证失败

mongoose.js CastError:在路径“未定义”处为值“[object Object]”转换为数字失败