我利用Keystone.js提供轻量级的CMS和API。我正在检查List上的重复条目:
Registration.schema.post('save', function(error, registration, next) {
if (error && error.name === 'MongoError' && error.code === 11000) {
error = Error(`409|${ registration['email'] } is already registered`);
}
next(error);
});
我正在解析错误消息中的状态代码,以便在我的API端点中返回。
在Keystone管理员中是否有不同的方法为重复项提供友好的错误消息,并且能够为API调用返回正确的状态代码?
答案 0 :(得分:0)
$ mongod --version
db version v3.6.9
git version: 167861a164723168adfaaa866f310cb94010428f
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
allocator: tcmalloc
modules: none
build environment:
distmod: debian81
distarch: x86_64
target_arch: x86_64
我认为您应该检查ValidationError
属性而不是MongoError
,如下所示:
RegistrationSchema.create(obj)
.then(...)
.catch(err => console.error('[registration] output: ', err);
我们假设在模拟email
错误之前没有提到is required
。
您会看到类似的内容
[registration] error: { ValidationError: Registration validation failed: email: Path `email` is required.
at ValidationError.inspect (....)
errors:
{
email:
{ Path `email` is required.
...
message: 'Path `email` is required.',
name: 'ValidatorError',
properties: [Object],
kind: 'required',
path: 'email',
value: [],
reason: undefined,
'$isValidatorError': true } },
_message: 'Registration validation failed',
name: 'ValidationError' }