Featherjs расширяет методы обслуживания адаптера базы данных

Я хочу знать, как можно удалить некоторые методы службы (конечную точку) из службы при использовании адаптера базы данных для продолжения (или любого другого)

// Initializes the `society` service on path `/society`
const createService = require('feathers-sequelize');
const createModel = require('../../models/society.model');
const hooks = require('./society.hooks');

module.exports = function (app) {
  const Model = createModel(app);
  const paginate = app.get('paginate');

  const options = {
    name: 'society',
    Model,
    paginate
  };

  // Initialize our service with any options it requires
  app.use('/societies', createService(options));

  // Get our initialized service so that we can register hooks and filters
  const service = app.service('societies');

  service.hooks(hooks);
};

здесь доступны все методы обслуживания: get,patch,post,remove - я хочу иметь только get и find

способ сделать это - остановить запрос с помощью ловушек, но это грязный способ.


person karim    schedule 03.02.2018    source источник


Ответы (1)


Крючки — это то, как Feathers контролирует подобные вещи. Вы можете предотвратить внешний доступ, проверив, установлен ли параметр params.provider:

const { Forbidden } = require('@feathersjs/errors');

const disable = context => {
  if(context.params.provider) {
    throw new Forbidden('You can not do this');
  }
};

app.service('societies').hooks({
  before: {
    get: disable,
    patch: disable,
    update: disable,
    remove: disable
  }
})
person Daff    schedule 04.02.2018