Gatsby graphql или условие для двух разных полей - PullRequest
1 голос
/ 09 мая 2020

Можно ли добавить оператор ИЛИ к двум разным полям в gatsby?

Я пытаюсь выполнить такой запрос:

{
    allFile(filter: {
        OR: [
            {absolutePath: {
                    eq: "/Users/jesusyepes/Documents/webs/lego-gatsby/src/images/site-icon.jpg"
                }},

            {atime: {
                    eq: "/Users/jesusyepes/Documents/webs/lego-gatsby/src/images/site-icon2.jpg"
                }},
        ]

    }) {
        nodes {
            absolutePath
            id
        }
    }
}

Это вызывает следующую ошибку: Поле \ "OR \" не определяется типом FileFilterInput.

Глядя на их документы , они говорят: «Гэтсби полагается на Sift, чтобы включить синтаксис запросов, подобный MongoDB, для фильтрации объектов» *. 1010 *

Включено Sift документация Я вижу ИЛИ поддерживается:

[
  { name: "Craig", state: "MN" },
  { name: "Tim", state: "MN" },
  { name: "Joe", state: "CA" }
].filter(sift({ $or: [{ name: "Craig" }, { state: "MN" }] }));

1 Ответ

0 голосов
/ 11 мая 2020

К сожалению, OR не поддерживается на момент этого ответа ( вот список всех поддерживаемых операторов )

Одна работа - обойтись запросом с двумя псевдонимами :

query {
  fileOne: allFile(filter: { ... }) { ... }
  fileTwo: allFile(filter: { ... }) { ... }
}

... а затем вручную объединить их в JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...