当我尝试保存我的“评级”架构时,它会给出错误
error: ValidationError: Rating validation failed
没有给出问题的字段名称,也没有问题的类型(如果它是关于转换,null或缺少值,或其他...)
在我的架构中,我没有任何字段“必需”,也没有“index:true”......我只是以这种方式指定类型:
{
ex_string_field : {type:String},
ex_number_field : {type:Number},
ex_array_field : [
{
sub_field_string : {type:String}
}
],
ex_object_field : {
sub_field_string : {type:String}
}
}
如何找到上升错误的字段?我有很多领域 . 实际上,没有任何必填字段,验证对象应该很容易 . 我猜想如果一个领域不合规,它就会被忽略....
这是我的系统:
"mongoose": "^4.11.12",
"node" : "v8.1.3",
"npm" : "5.3.0"
这是完整的错误堆栈跟踪:
2017-12-5 - error: ValidationError: Rating validation failed
at ValidationError (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/error/validation.js:28:11)
at model.Document.invalidate (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:1658:32)
at model.Document.$set (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:760:10)
at model._handleIndex (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:590:14)
at model.Document.$set (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:550:24)
at model._handleIndex (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:574:12)
at model.Document.$set (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:550:24)
at model.Document (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/document.js:77:12)
at model.Model (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/model.js:55:12)
at new model (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/mongoose/lib/model.js:3885:13)
at /Volumes/HD Daniele/Sites/cashinvoice/server/server/routes/admin/admin-utils.js:370:13
at _fulfilled (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/q/q.js:854:54)
at self.promiseDispatch.done (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/q/q.js:883:30)
at Promise.promise.promiseDispatch (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/q/q.js:816:13)
at /Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/q/q.js:624:44
at runSingle (/Volumes/HD Daniele/Sites/cashinvoice/server/node_modules/q/q.js:137:13)
==================更新====================
经过一些测试,我最终得知错误是复杂字段'main_info' . 具体而言,交换了2种类型(数字为String,String为数字) . 它们被定义如下:
this.schema = new Schema({
main_info :
{
rea : {type:String},
name : {type:Number},
}
});
这是一个提升验证错误的传递数据的示例:
main_info :
{
"rea": 649087,
"name": "NUTIS S.R.L."
}
无论如何,我认为这是疯狂的手动解析整个数据,以找出问题所在 . Mongoose真的没有提供有关验证失败的任何进一步信息吗?