Проверка отсутствия параметров в 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.

Благодарю.

Другие вопросы по тегам