我特意使用shopify graphql admin api来查询订单。
我想搜索嵌套的相关字段。
以下是我的查询。
export const orderHistoryQuery = gql`
query Order($productsFirst: Int!, $productsAfter: String, $filterQuery: String) {
orders(first: $productsFirst, after: $productsAfter, reverse: true, query:$filterQuery) {
edges {
cursor
node {
id
name
customer {
id
metafields(first: 10) {
edges {
node {
id
key
value
namespace
}
cursor
}
}
}
totalPriceSet {
shopMoney {
amount
currencyCode
}
}
subtotalPriceSet {
shopMoney {
amount
currencyCode
}
}
totalRefundedSet {
shopMoney {
amount
currencyCode
}
}
currencyCode
email
phone
processedAt
totalShippingPriceSet {
shopMoney {
amount
currencyCode
}
}
totalTaxSet {
shopMoney {
amount
currencyCode
}
}
shippingAddress {
firstName
lastName
address1
address2
city
province
zip
country
}
billingAddress {
firstName
lastName
address1
address2
city
province
zip
country
}
customAttributes {
key
value
}
}
}
}
}
`;
我想查询metafields或ANYTHING,但它似乎不支持它。我不确定我是否只有错误的查询语法或者它是否不受支持。 shopify搜索语法文档并没有真正帮助,这是我对graphql的知识分崩离析的地方。
是否可以在graphql中执行此操作?我还尝试添加其设置不支持的metafields(id:$ whateverID)。
很遗憾,Shopify不支持metafields
上的查询过滤器。解决这个问题的最好方法是使用像GraphiQL这样的graphql explorer。如果您转到Apps> Shopify GraphiQL App,Shopify仪表板会内置此功能。
使用GraphiQL,您可以看到:
我认为您的选择是根据您的要求进行查询,并在获得结果后过滤或使用客户标记和按标签查询。
你可以通过简化事情来帮助你解决问题。我给你的建议是尝试一个简单的查询。你能收到订单吗?由于订单有客户(通常但不总是),您是否可以获得与该客户关联的元数据?
在试图展示你想要做的事情时,你有很多障碍,几乎就像你想要一个偏头痛试图调试任何事情一样。从GraphQL网站的角度来看,对端点的GraphQL调用已经很好地记录了,而Shopify只不过是一个真实的实现,但需要注意的是它们会根据复杂性向您收取调用,因此您最好监控您的信用。
所以,你试试简单的电话。获得产品,它是Metafields。获取客户记录,它是Metafields。如果你能做到这一点,那么你不会对文档提出太多挑战,也不会对GraphQL查询的概念提出质疑。一旦基本全部工作,你可以在变量,游标,分页等工作...但是直到一次性调用给你你想要的,调试应该集中在最简单的调用,而不是一切和厨房水槽。
此外,当你搞砸一个到端点的呼叫时,Shopify通常会返回一个响应,其中包含你搞砸的地方的详细信息,为你提供第一个看的地方。我们没有看到您的回复,所以没有什么可以继续帮助您。