Я пытаюсь обернуть голову вокруг GraphQL, и я использую PostGraphile, чтобы легко и быстро сопоставить мою базу данных PostgreSQL и раскрыть ее с помощью GraphQL. Однако я долгое время застревал на некоторых вещах, которые в простом SQL можно было бы сделать за считанные минуты -
Во-первых, я пытаюсь получить все записи из своей базы данных после определенной даты, пока не смог, и в итоге получаю записи все, что крайне неэффективно.
Во-вторых, я хотел бы получить все записи, в которых поле, допускающее значение NULL, не является нулевым (то есть, только если в нем что-то есть, оно будет отображаться в результатах GraphQL)
Если бы кто-нибудь мог пролить свет на то, как это сделать, или указать мне на хороший учебник, в котором простым способом объясняется, как писать собственные функции фильтрации, было бы здорово.


PostGraphile имеет небольшой, но постоянно растущий список плагины сообщества; для ваших нужд вам, вероятно, понадобится postgraphile-плагин-соединение-фильтр, который добавляет ряд фильтров к соединениям PostGraphile, которые вы ожидаете (меньше, больше, в списке, а не в списке и / или / не, например, содержит и т. д.). Также можно реализовать свои собственные плагины или достичь этой цели с помощью индивидуальные запросы.
Чтобы расширить ответ @Benjie, сначала установите плагин:
yarn add postgraphile-plugin-connection-filter
Затем вы можете запустить postgraphile из консоли:
postgraphile --append-plugins <plugin path> --connection <dbname>
например в Linux:
postgraphile --append-plugins `pwd`/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
или в Windows:
postgraphile --append-plugins /users/bburns/desktop/moveto/site/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
Затем вы можете попробовать новые фильтры, используя конечную точку graphiql в http: // локальный: 5000 / graphiql. Вы можете запускать такие запросы, как
{
allProperties(first: 5, filter: {
appraisedValue: {lessThan: 100000}
}) {
nodes {
propertyId
appraisedValue
acres
}
}
}
Примечание. В документации на https://www.graphile.org/postgraphile/exnding/ говорится, что вы можете просто указать имя пакета npm, но, похоже, это не работает в Windows.
Спасибо, что расширили мой ответ ? Вам не нужно использовать полный путь, если вы установили из npm, вы можете просто использовать --append-plugins postgraphile-plugin-connection-filter; полный путь необходим только в том случае, если вы используете локальный модуль (потому что мы используем require(...) для его загрузки).
Спасибо @Benjie и за вашу работу над postgraphile - это отличная библиотека!
Спасибо, @Benjie! Это именно то, что я в итоге сделал, сработало как шарм!