Позволяет создавать множественные записи только по внутренним сервисным вызовам - PullRequest
0 голосов
/ 06 мая 2020

Я хочу создать несколько записей для внутреннего вызова службы. Но для внешних транспортов (rest, websockets) эта функциональность все равно должна быть заблокирована.

Я знаю, что для параметра multi можно установить значение true или ['create'] в параметрах службы, но это не решает проблему. , потому что внешние транспорты могут создавать несколько записей.

Мои первые решения были следующие:

someService.hooks. js

...
before: {
  create: [
    context => {
      if (!context.params.provider) {
        context.service.options.multi = true;
      }
      return context;
    }
  ],
}
...

Но это полностью перезаписывает службу варианты для всех вызовов службы.

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

Это будет единственное какое решение сработает или я что-то пропустил?

1 Ответ

1 голос
/ 07 мая 2020

В настоящее время вы можете включить multi: [ 'create' ] и проверить ловушку, если это внешний вызов, и в этом случае выдать ошибку для массивов:

const { BadRequest } = require('@feathersjs/errors');
// ...
  create: [
    async context => {
      if (context.params.provider && Array.isArray(context.data)) {
        throw new BadRequest('Not allowed');
      }

      return context;
    }
  ],

В следующих версиях это будет возможно просто передав параметр multi в params (отслеживается в этой проблеме )

...