Postgraphile: требуется только несколько параметров в функции - PullRequest
0 голосов
/ 25 октября 2019

Когда я пишу функцию в Postgresql, я могу добавить строгий, в результате чего все параметры, требуемые в Graphql (!), Без строгого, все параметры являются необязательными.

В обязательные поля в нестрогой функции я могу броситьисключения или просто возвращают ноль, не выполняя функцию, как строгая функция, если параметр имеет значение ноль. Но как я могу сказать Postgraphile, какие параметры требуются? Посредством комментария или чего-либо, или маркировки параметров, которые по умолчанию являются необязательными.

1 Ответ

0 голосов
/ 25 октября 2019

В моем поиске я нашел этот вопрос, заданный здесь , и особенно этот ответ. Ответ, который я нашел в цитате:

Эта функция реализована в graphile-build-pg с помощью параметра pgStrictFunctions, но в настоящее время она не предоставляется через Postgraphile-core для самого PostGraphQL. Он рассматривает все функции как строгие, требуя, чтобы все аргументы были помечены как требующиеся, если только они не имеют значений по умолчанию.

Можно пометить аргумент как значение по умолчанию, равное нулю, но, конечно, строгая функция с значением по умолчанию, равным нулюбудет автоматически возвращать ноль без вызова.

create function a(b int, c int default null)
returns int as $$
  select b;
$$ language sql stable;

По умолчанию ни b, ни c не потребуются, но с установленным pgStrictFunctions b будет помечено как требуется (но c не будет).

Хотя в нем упоминается решение, в нем не указано, как его реализовать. Поиск по всему проекту (включая node_modules) для pgStrictFunctions также не дал никаких подсказок. Как реализовать я наконец-то нашел на раздоре, вот как я наконец-то заработал:

@Module({
  controllers: [],
  imports: [
    PostGraphileModule.forRoot({
      ......
      graphileBuildOptions: {
        pgStrictFunctions: true,
      },
      ......
    }),
  ],
  providers: [GraphQLService],
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...