javascript - 验证转换为数字失败

标签 javascript mongodb mongoose schema

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

检查我已经检查过:

achievement值为5,

成就类型为Number

错误:

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

}

最佳答案

您正在覆盖变量 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) {});

关于javascript - 验证转换为数字失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55298338/

相关文章:

javascript - 获取屏幕、当前网页和浏览器窗口的大小

javascript - 为什么 JavaScript 中函数被视为类

MongoDB - 查询过去几个小时内创建的所有文档,并按分钟分组?

node.js - Mongoose 从传递的数组中找到不匹配的 id

javascript - 优化 Node.js 中的组合 MongoDB 查询

javascript - 每秒检查一次json,数据变化时刷新页面

javascript - 滚动条问题 x2

node.js - 如何使用Node.js + Mongoose + MongoDB保存多语言数据?

node.js - Angular 使用错误的 URL 通过 NodeJS 查询 MongoDB

javascript - 如何在羽毛中搜索 Mongoose 的ObjectId?