Shopify REST Admin API - 通过 line_items[0].title = something 获取订单
Shopify REST Admin API - fetch orders by line_items[0].title = something
对于上下文,我通过 node-fetch Shopify Admin REST API orders.json 请求,并使用我的代码中显示的查询。出于某种原因,这只是 returns 最新订单,无论我是否添加 status=any 或 limit=250(这是订单的标准限制)。在详细介绍之前,让我展示一下我的代码,以便您理解查询。
const User = require('../models/User.model');
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
const getReportsPartner = async (req, res, next) => {
const user = await User.findById(req.user.id)
const url = 'https://astore.com/admin/orders.json?fields=total_price_usd,line_items';
const headers = {
'X-Shopify-Access-Token': 'anaccesstoken',
'Content-type': 'application/json',
'Authorization': 'anauthkey'
}
fetch(url, { method: 'GET', headers: headers })
.then(res => res.json())
.then(json => {
const orders = json.orders[0]
console.log(orders)
const partner = orders.line_items[0].title
const commission = (orders.total_price_usd * .125).toFixed(2)
res.render('reports/partnerReport', { partner: partner, commission: commission })
})
}
module.exports = { getReportsPartner }
除了状态和限制之外,我还尝试以其他方式修改 URL。我将在下面列出其中一些:
https://astore.com/admin/orders.json?fields=total_price_usd,line_items.title=something
https://astore.com/admin/orders.json?fields=total_price_usd,line_items&line_items.title=something
我也在 url 中尝试了 line_items[0].title=something,但这似乎使整个请求无效。感谢您提供的任何帮助。如果您需要更多上下文,请告诉我。最终,我计划按标题获取最近的订单,并以报告格式绘制订单和佣金图表。对于未来的订单,我将使用网络钩子,所以目前我只担心过去。
正如 HymnZzy 在评论中提到的那样,无法仅查询 line_items 标题。我决定做的是对最近 250 个订单或某个日期范围内的订单提出请求。这是一个带有查询的示例 url。
`https://${yourshop}.com/admin/api/2022-01/orders.json?limit=250&status=any&financial_status=paid&fields=line_items,total_price_usd`
然后我遍历结果并对每个具有特定标题的订单做一些事情。
for (let i=0; i<json.orders.length; i++) {
try {
let title = json.orders[i].line_items[0].title
let price = json.orders[i].total_price_usd
/* Do Something with title and price here */
} catch (err) {
console.log(err)
}
}
我唯一的问题是这种方法的速度,但是如果我们想通过 REST Admin API 按 line_items 标题查找订单,Shopify 似乎限制了我们这样的事情。
对于上下文,我通过 node-fetch Shopify Admin REST API orders.json 请求,并使用我的代码中显示的查询。出于某种原因,这只是 returns 最新订单,无论我是否添加 status=any 或 limit=250(这是订单的标准限制)。在详细介绍之前,让我展示一下我的代码,以便您理解查询。
const User = require('../models/User.model');
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
const getReportsPartner = async (req, res, next) => {
const user = await User.findById(req.user.id)
const url = 'https://astore.com/admin/orders.json?fields=total_price_usd,line_items';
const headers = {
'X-Shopify-Access-Token': 'anaccesstoken',
'Content-type': 'application/json',
'Authorization': 'anauthkey'
}
fetch(url, { method: 'GET', headers: headers })
.then(res => res.json())
.then(json => {
const orders = json.orders[0]
console.log(orders)
const partner = orders.line_items[0].title
const commission = (orders.total_price_usd * .125).toFixed(2)
res.render('reports/partnerReport', { partner: partner, commission: commission })
})
}
module.exports = { getReportsPartner }
除了状态和限制之外,我还尝试以其他方式修改 URL。我将在下面列出其中一些:
https://astore.com/admin/orders.json?fields=total_price_usd,line_items.title=something
https://astore.com/admin/orders.json?fields=total_price_usd,line_items&line_items.title=something
我也在 url 中尝试了 line_items[0].title=something,但这似乎使整个请求无效。感谢您提供的任何帮助。如果您需要更多上下文,请告诉我。最终,我计划按标题获取最近的订单,并以报告格式绘制订单和佣金图表。对于未来的订单,我将使用网络钩子,所以目前我只担心过去。
正如 HymnZzy 在评论中提到的那样,无法仅查询 line_items 标题。我决定做的是对最近 250 个订单或某个日期范围内的订单提出请求。这是一个带有查询的示例 url。
`https://${yourshop}.com/admin/api/2022-01/orders.json?limit=250&status=any&financial_status=paid&fields=line_items,total_price_usd`
然后我遍历结果并对每个具有特定标题的订单做一些事情。
for (let i=0; i<json.orders.length; i++) {
try {
let title = json.orders[i].line_items[0].title
let price = json.orders[i].total_price_usd
/* Do Something with title and price here */
} catch (err) {
console.log(err)
}
}
我唯一的问题是这种方法的速度,但是如果我们想通过 REST Admin API 按 line_items 标题查找订单,Shopify 似乎限制了我们这样的事情。