Graphql Отфильтровать определенные изображения, чтобы они не отображались?

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

Как мне написать свой фильтр, чтобы убрать 2 изображения с экрана?

У меня есть одно изображение с именами background.jpg и background-2.jpg, которое я хочу отфильтровать

  const data = useStaticQuery(graphql`
query {
  allFile(filter: { extension: { regex: "/(jpg)|(png)|(jpeg)/" },

 // So this line filters out background.jpg, but I can't seem to 
 filter out both background.jpg and background-2.jpg?

  base: {ne: "background.jpg"}
  }) {
    edges {
      node {
        base
        childImageSharp {
          fluid(maxHeight: 600, maxWidth: 600) {
            ...GatsbyImageSharpFluid
          }
        }
      }
    }
  }
}
`)

person designxd10    schedule 16.09.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как я могу вернуть конкретный изображение в Gatsby для моего многоразового компонента?   -  person Ferran Buireu    schedule 17.09.2020
comment
нет, в итоге я использовал base: {ne: background.jpg}, и это отфильтровало его, но я не могу заставить его работать как для фона, так и для фона-2   -  person designxd10    schedule 17.09.2020
comment
Я уже видел эти ответы, и они не имеют отношения к моему вопросу, потому что я уже просматриваю папку с изображениями и показываю изображения. Мне нужно знать, как отфильтровать имя базового фильтра background.jpg и background-2.jpg, чтобы оно не отображалось на моей странице   -  person designxd10    schedule 17.09.2020


Ответы (1)


Вы можете отфильтровать узел name с nin (даже с другим регулярным выражением) или ne правилом.

const data = useStaticQuery(graphql`
  query {
    allFile(filter: { 
    extension: { regex: "/(jpg)|(png)|(jpeg)/" } }
    name: {ne: "background"})
     {
      edges {
        node {
          base
          childImageSharp {
            fluid(maxHeight: 600, maxWidth: 600) {
              ...GatsbyImageSharpFluid
            }
          }
        }
      }
    }
  }
`)

Вышеупомянутый запрос должен помочь. Если нет, вы всегда можете использовать правило nin для создания массива исключений или использовать другое регулярное выражение для исключения имени фона.

Дополнительная информация: https://www.gatsbyjs.com/docs/graphql-reference/#filter

person Ferran Buireu    schedule 16.09.2020
comment
он по-прежнему отфильтровывает только background.jpg, но background-2.jpg все еще отображается. Это проблема именования? или как бы вы отфильтровали несколько изображений по имени? - person designxd10; 17.09.2020
comment
Я попытался поместить его в массив "message": "Expected type String, found [\"background\", \"background2\"].", но все равно получил эту ошибку - person designxd10; 17.09.2020