我有一个静态方法设置,可以验证对象是否正确遵循模型的模式,并且我已经让验证本身工作正常,但是我无法让Mongoose隐藏{ {1}}错误显示在控制台中。
验证的静态方法是:
ValidationError
然后当我执行它时:
fieldSchema.statics.testValidate = function( field ) {
return new Promise( ( res, rej ) => {
new this( field ).validate( err => {
if ( err ) return rej( err )
res( true )
} )
})
}
就像我说的那样,我可以让它来验证数据,但它总是会显示这个错误:
Field.testValidate( fieldData )
.then(data => {
console.log('OK!', data)
})
.catch( err => {
console.error('FAILED:',err)
})
.finally(() => Mongoose.connection.close())
(注意:我使用Bluebird作为我的JS承诺,因为它与then / catch有任何关系)
脚本执行继续使用代码,这意味着它实际上不会杀死脚本或任何东西,它只是将错误记录到控制台。但是因为这个函数是为了验证,它不是真正的错误",所以有没有办法从控制台中隐藏它? (仅适用于此功能,不适用于所有Mongoose错误)
由于
答案 0 :(得分:0)
validate
已经返回一个promise,因此您无需将其包装在新的promise中。您看到错误记录到控制台的原因是因为您将其包装在新的承诺中,从而阻止原始承诺被捕获,即Unhandled rejection
。
fieldSchema.statics.testValidate = function(fieldData) {
return new this(fieldData).validate()
}