验证强制转换为数字失败

时间:2019-03-22 11:08:43

标签: javascript mongodb mongoose schema

我在路径badgeid上收到验证错误,当badgeid是一个数字,而我在保存的是一个数字时,为什么在获取它时却得到了这个错误?

检查我是否已检查:

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'},

}

1 个答案:

答案 0 :(得分: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) {});