maria
maria

Reputation: 159

validation Cast to Number failed

Im getting validation error at path badgeid, why am i getting this when my getting it when badgeid is a number, and what im saving is a number?`

Checks that i already checked:

achievement value is 5,

achievement type is Number

error:

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

save code:

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

schema:

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

}

Upvotes: 1

Views: 388

Answers (1)

Ankit Agarwal
Ankit Agarwal

Reputation: 30739

You are overriding the variable achievement. You are setting achievement with the new model so you need to use another name instead:

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

Or you can initialize the value when you create the model object. But it is still a good practice to use different variable names for different context.

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

Upvotes: 1

Related Questions