Nano Hash - криптовалюты, майнинг, программирование

Gatsby.js с Ghost CMS: как запросить список сообщений, содержащих те же теги, что и в текущем сообщении

Я хочу отобразить список сообщений, которые содержат те же теги / теги, что и текущее сообщение. Я не могу найти способ запросить нужную информацию.

Я могу сделать этот запрос с graphiql, но не могу воспроизвести его, так как хочу заменить переменную $ slug.

  allGhostPost(filter: {tags: {elemMatch: {name: {eq: $slug }}}}) {
    nodes {
      title
      tags {
        name
      }
    }
  }
}

Поскольку у меня есть доступ к моим текущим тегам сообщений внутри файла post.js, я хотел бы иметь возможность заменить $ slug переменной в моем компоненте, например post.tags.map(tag =>tag, но это кажется невозможным.

Вы знаете способ?



Ответы:


1

Вам может быть полезно ознакомиться с нашими рецептами GraphQL в нашей документации, они могут быть для вас хорошими ориентирами: https://ghost.org/docs/api/v3/gatsby/graphql-recipes-for-ghost/

05.05.2020

2

При поиске тегов в запрос можно добавить доступный. Поскольку теги - это массив, если вы хотите отфильтровать artciles, исключая или включая теги, вы можете передать массив в свою переменную. Но необходимо использовать скалярный тип [String], а не String

Вот пример запроса

 likePosts: allGhostPost(
    limit: 3
    filter: {
      id: { ne: $id }
      published_at: { lt: $published_at }
      tags: { elemMatch: { slug: { in: $tags } } }
    }
    sort: { fields: published_at, order: DESC }
  ) {
    edges {
      node {
        title
        date: published_at(formatString: "DD MMM YYYY")
      }
    }
  }

Когда вы используете скалярный тип [String], вы должны использовать in или nin вместо eq или ne

tags: { elemMatch: { slug: { in: $tags } } }

Здесь мы ищем все сообщения с одинаковыми тегами

Чтобы проверить это в graphiql в разделе query variables, мы могли бы добавить

{
  "id": "Ghost__Post__5f8809143f185d9a1c72c199",
  "published_at": "2020-10-15T08:32:21.000+00:00",
  "tags":["media-buying", "case-study"],
  "slug": "affiliate-media-buy-case-study-how-to-deal-with-very-large-scale-networks-2"
}

Здесь мы передаем arry переменной tags

19.10.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..