Проверка отсутствия параметров в feathresjs
Я прочитал документацию feathersjs, но после выполнения метода find в сервисе я понял, что если я не предоставлю никаких параметров запроса, сервис вернет все данные, что мне не нужно. Как я могу определить ловушку, чтобы проверить, что есть по крайней мере один параметр запроса для продолжения; в противном случае отправьте обратно ошибку 403 (неверный запрос).
У меня есть сомнения в способе сделать это, я попробовал это:
app.service('myService')
.before(function(hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
})
.find({
query: {
$sort: {
year: -1
}
}
})
И я попробовал в файле ловушек на ловушках это (это казалось действительно отчаянным и глупым):
function noparams (hook) {
if (hook.params.query.name === undefined){
console.log('There is no name, throw an error!');
}
}
module.exports = {
before: {
find: [ noparams(this) ] ...
}
}
но он не компилируется (я не знаю, что отправлять в качестве параметра), и примеры, похоже, были для версии до 2.0 и, кроме того, код, который я обнаружил, был в app.js, но все кодируется по-разному с использованием перо-кли, поэтому примеры, даже в книге, не противоречат версии scaffolded, что сбивает с толку, поскольку показывает, что код в другом файле должен быть.
Благодарю.
1 ответ
Я закончил с использованием ловушки before, поэтому код используется так:
const errors = require('feathers-errors');
module.exports = function () {
return function (hook) {
if(hook.method === 'find'){
if (hook.params.query.name === undefined || hook.params.query.length == 0){
throw new errors.BadRequest('Invalid Parameters');
}else{
return hook;
}
}
}
};
Если вы использовали перо-cli для создания вашего приложения (feathers v2.x), вам больше ничего не нужно делать. Если это более ранняя версия, вам может понадобиться добавить обработчик ошибок Express, и это указано в документации | Ошибки |REST.
Благодарю.