我正在尝试为我的shopify应用程序获取商店的所有订单事件。最好的可扩展方式是什么?
我已经尝试了Events API,Events API的留档说使用GET /admin/events.json
检索商店的所有事件列表,但它不返回所有订单事件,只返回订单确认事件。
我可以通过使用GET/admin/orders/{order\u id}/events查看与订单关联的所有事件。json
,但此解决方案可能不适用于我的用例。有了这个endpoint,我需要首先获取所有订单的列表,然后迭代这些订单ID以获取这些订单的事件。对于我来说,它在订单ID级别是不可伸缩的,如果我可以通过事件级别的一个endpoint获得所有订单事件,那就太完美了。
有人知道解决这个问题的最佳方法吗?
有一个办法。我会这样做:
现在,如果您的商户客户希望查看与订单相关的事件,并且他们不方便直接导航到订单,则使用订单ID调用您的应用程序可以在您保存事件时快速报告事件。
如果您监听订单更新,您可以扫描添加的新事件。
所以你的缩放问题并不是一个真正的问题,因为你只需要抓取一次旧订单。向前移动,只是听命令/更新将保持事情更新,而没有太多的开销。
如果您专门寻找订单时间线事件,可以使用Shopify GraphQL管理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
}
}
}
]