API-интерфейсы Shopify Events - не возвращает события графика времени заказа - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь получить все события заказа для магазина для моего приложения shopify. Какой будет лучший масштабируемый способ?

Я пытался использовать API событий, в документации по API событий говорится, что он использует GET /admin/events.json для получения списка всех событий для магазина, но он не возвращает все события заказа, возвращается только подтвержденное заказом событие.

Я вижу все события, связанные с заказом, используя GET /admin/orders/#{order_id}/events.json, но это решение может не сработать для моего варианта использования. С этой конечной точкой мне нужно будет сначала получить список всех заказов, а затем перебрать эти идентификаторы заказов, чтобы получить события для этих заказов. Это не будет масштабируемым для меня на уровне идентификатора заказа, было бы идеально, если бы я мог получить все события заказа через одну конечную точку на уровне событий.

Кто-нибудь знает лучший способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Если вы специально ищете события временной шкалы Порядка, вы можете получить это с помощью Shopify GraphQL Admin API. Такой запрос вернет первые 100 событий в определенном порядке.

# simple query to get top 10 messages from order timeline
query {
  order(id: "gid://shopify/Order/618806837270") {
    events(first: 100) {
      edges {
        node {
          __typename message
          createdAt
          id
        }
      }
    }
  }
}

Это вернет результат как

[
  {
    "order": {
      "events": {
        "edges": [
          {
            "node": {
              "__typename": "BasicEvent",
              "message": "Order was placed on XXXXXXX.",
              "createdAt": "2018-11-08T22:16:54Z",
              "id": "gid://shopify/BasicEvent/9349083824150"
            }
          },
          {
            "node": {
              "__typename": "BasicEvent",
              "message": "Received new order <a href=\"https://XXXXXXX.myshopify.com/admin/orders/618806837270\">#1183</a>.",
              "createdAt": "2018-11-08T22:16:55Z",
              "id": "gid://shopify/BasicEvent/9349083856918"
            }
          },
          {
            "node": {
              "__typename": "BasicEvent",
              "message": "XXXXXXX fulfilled 1 item from Shopify.",
              "createdAt": "2019-02-04T17:26:00Z",
              "id": "gid://shopify/BasicEvent/14072023547926"
            }
          },
          {
            "node": {
              "__typename": "BasicEvent",
              "message": "This order was archived.",
              "createdAt": "2019-02-04T17:26:00Z",
              "id": "gid://shopify/BasicEvent/14072023580694"
            }
          },
          {
            "node": {
              "__typename": "CommentEvent",
              "message": "this is a comment",
              "createdAt": "2019-02-04T17:26:15Z",
              "id": "gid://shopify/CommentEvent/14072023875606"
            }
          }
        ]
      }
    }
  },
  {
    "cost": {
      "requestedQueryCost": 103,
      "actualQueryCost": 8,
      "throttleStatus": {
        "maximumAvailable": 1000,
        "currentlyAvailable": 992,
        "restoreRate": 50
      }
    }
  }
]
0 голосов
/ 14 марта 2019

Есть способ. Я бы сделал это:

  • скачать все заказы
  • повторять эти заказы в поисках событий
  • сохранить события с идентификатором заказа в качестве ключа.

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

Если вы слушаете обновления заказа, вы можете искать новые события.

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

...