У меня есть этот проверенный метод на стороне сервера import / api / Shops / server / method.js :
export const shopGeocodeAddress = new ValidatedMethod({
name: 'shops.geocodeAddress',
validate: new SimpleSchema({
streetName: { type: String },
houseNumber: { type: Number },
city: { type: String },
state: { type: String },
country: { type: String },
zip: { type: String, optional: true },
}).validator(),
run({ streetName, houseNumber, city, state, country, zip }) {
...
...
...
...
return location;
},
});
Чтобы проверить сообщение об ошибке проверки на клиенте, я отправляю houseNumber в виде строки, которая приведет к сбою метода, так как она ожидает houseNumber в качестве Number. Все идет нормально. Я получаю сообщение об ошибке проверки на консоли сервера, например:
I20190418-10:55:28.605(-3)? Exception while invoking method 'shops.geocodeAddress' { ClientError: House number must be of type Number
...
...
I20190418-10:55:28.608(-3)? errorType: 'ClientError',
I20190418-10:55:28.608(-3)? name: 'ClientError',
I20190418-10:55:28.608(-3)? error: 'validation-error',
I20190418-10:55:28.609(-3)? details:
I20190418-10:55:28.609(-3)? [ { name: 'houseNumber',
I20190418-10:55:28.609(-3)? value: NaN,
I20190418-10:55:28.609(-3)? type: 'expectedType',
I20190418-10:55:28.609(-3)? dataType: 'Number',
I20190418-10:55:28.609(-3)? message: 'House number debe ser del tipo Number' } ] }
Но на клиенте я получаю только внутреннюю ошибку сервера, подобную этой:
details: undefined
error: 500
errorType: "Meteor.Error"
isClientSafe: true
message: "Internal server error [500]"
reason: "Internal server error"
Таким образом, я не могу указать клиенту, какой тип ошибки или какое поле необходимо изменить, чтобы метод работал правильно.
Есть ли способ отловить ошибки проверки на методах сервера и отправить их клиенту?
Спасибо за совет!