我该如何解决未处理的承诺拒绝这个错误

时间:2021-05-13 19:05:40

标签: javascript node.js validation

const User = mongoose.model('User', {
    name : {
        type: String,
        required: true//optional
    },
    email: {
        type: String,
        required: true,
        validate (value){
            if(!validator.isEmail(value)){
                throw new Error('Age must be positve number')
            }
        }
    },
    age: {
        type: Number,
        //custom validator
        validate(value) {
            if (value < 0) {
                throw new Error('Age must be positve number')
            }
        }
    }
})

const me = new User({
    name: 'Killua',
    email: 'mike@'
    
})
me.save().then(() => {
    console.log(me)
}).catch(() => {
    console.log('Error', error)
})

显示错误-> 使用验证时显示此错误

UnhandledPromiseRejectionWarning: ReferenceError: 错误未定义 在 C:\Users\kbd\Desktop\node\task-manager\src\db\mongoose.js:71:26 在 processTicksAndRejections (internal/process/task_queues.js:93:5) (节点:14088) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。要在未处理的承诺拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用 create() 函数。

   User.create(
    {
      name: 'Killua',
      email: 'mike@'
    },
    function (err, newuser) {
      if (err) {
        console.log(err);
      } else {
        console.log(newuser);
        //do somethinng
      }
    }
  );

这就是我通常在猫鼬中添加项目的方式。如果此方法有任何问题,请告诉我。