订单过滤器数组和使用javascript更新过滤订单的请求PUT方法
我很难想出如何过滤和更新过滤订单上的API: 在Shopify orders面板中,我调用了一个API,得到了所有订单的列表。我实现了仅使用put方法更新1个数组,但它不是动态的。所以基本上我想做的是: 顺便说一句,这都是javascript 获取所有订单的api调用,然后过滤同时具有加拿大国家/地区和空白电话号码的订单,然后在具有加拿大和空白号码的订单上,我尝试使用PUT方法更新这些订单,将号码更改为“虚拟号码”,但无法仅将其应用于具有加拿大和空白号码的订单。我得到了所有的命令,我得到了6个命令的对象数组。这是到目前为止我的代码订单过滤器数组和使用javascript更新过滤订单的请求PUT方法,javascript,arrays,rest,object,shopify-api,Javascript,Arrays,Rest,Object,Shopify Api,我很难想出如何过滤和更新过滤订单上的API: 在Shopify orders面板中,我调用了一个API,得到了所有订单的列表。我实现了仅使用put方法更新1个数组,但它不是动态的。所以基本上我想做的是: 顺便说一句,这都是javascript 获取所有订单的api调用,然后过滤同时具有加拿大国家/地区和空白电话号码的订单,然后在具有加拿大和空白号码的订单上,我尝试使用PUT方法更新这些订单,将号码更改为“虚拟号码”,但无法仅将其应用于具有加拿大和空白号码的订单。我得到了所有的命令,我得到了6个命
$(document).ready(function () {
// this is valid url and returns all orders
var api_url = "https://($api-domain-bla-bla)/admin/api/2020-10/orders.json?status=any.json";
$.ajax({
url: api_url,
contentType: "application/json",
dataType: "json",
success: function (result) {
console.log(result);
// get all orders phone country
let orders = result.orders;
console.log(orders);
for(let i = 0; i < orders.length;i++) {
let phone = orders[i].shipping_address.phone;
let country = orders[i].shipping_address.country;
// here i am trying to filter them right away but don't know how to make array of filter objects
// the if statement works
if ( country === "Canada" && phone === '') {
// over here i am trying to do something to those objects which if statement is true.
let filteredOrder = orders[i].concat
console.log(orderId);
// a function with parameter of the filtere objects variable, to the api PUT method to update
// the filter orders/objects
checkCountry(filteredOrder);
}
// console.log(phone);
// console.log(country);
// checkPhone(phone, country);
}
},
});
});
抱歉,如果我说得不清楚,有什么帮助吗?我不确定您想要完成什么。我的理解是:
orders = orders.map(order=>{
let {country, phone } = order.shipping_address
if(country === "Canada" && phone === ''){
order.shipping_address.phone = '0000000'
}
return order
})
而不是把过滤器都放进去
$.ajax({
method: "PUT",
url: api_url_post,
contentType: "application/json",
crossDomain: true,
dataType: "json",
data: JSON.stringify(orders),
success: function (data, status, jqXHR) {
alert("success");// write success in " "
},
error: function (jqXHR, status) {
// error handler
console.log(jqXHR);
alert('fail' + status.code);
}
});
可能有一种方法可以选择性地更新符合您标准的每个订单,但我不知道您正在使用的api
$(document).ready(function () {
var api_url = "https://api-blalbla/admin/api/2020-10/orders.json?status=any.json";
$.ajax({
url: api_url,
contentType: "application/json",
dataType: "json",
success: function (result) {
console.log(result);
// get all orders phone country
let orders = result.orders;
console.log(orders);
orders = orders.map(order=>{
let {country, phone } = order.shipping_address
if(country === "Canada" && phone === ''){
order.shipping_address.phone = '0000000'
checkCountry(order, orders)
console.log(orders);
console.log(order);
}
else {
return order
}
})
},
});
});
function checkCountry(filteredOrder, allOrders) {
var api_url_post = "https://api-blalbla/admin/api/2020-10/orders.json?status=any.json";
// var phone = {
// "orders":
// {
// // "id": 1843613401136,
// // "phone": "+0000000000",
// "shipping_address": {
// "phone": "0000000000"
// }
// },
// }
$.ajax({
method: "PUT",
url: api_url_post,
contentType: "application/json",
crossDomain: true,
dataType: "json",
data: JSON.stringify(allOrders),
success: function (data, status, jqXHR) {
alert("success");// write success in " "
},
error: function (jqXHR, status) {
// error handler
console.log(jqXHR);
alert('fail' + status.code);
}
});
}
这是我到目前为止的代码,试图将所有订单放到数据中,就像u所说的一样,在put请求中仍然存在相同的错误
另外,我认为你可以通过id获得特定的订单
/admin/api/2020-10/orders/{order_id}.json
所以mby我得到过滤后的订单id,并在url上输入参数,然后用电话“00000”更新订单。应该这样吗?是的,就是这样
Also, I figured that u can get specific order by id
/admin/api/2020-10/orders/{order_id}.json
So mby i get the filtered order id and put in parameter on url and update that order with phone "00000". Should this work?
非常感谢,这段代码帮助了我,我非常感激!)
更新:是否只有从阵列中获取第一个订单
// mby like except .map to [0]
orders = orders[0](order=>{
let {country, phone } = order.shipping_address
if(country === "Canada" && phone === ''){
order.shipping_address.phone = '0000000'
}
return order
})
我像这样需要它,这样如果商店有2万张订单,它就不会检查所有订单。只有第一个(制造的最新的一个)
orders = orders.map(order=>{
let {country, phone } = order.shipping_address
if(country === "Canada" && phone === ''){
order.shipping_address.phone = '0000000'
}
return order
})
// mby like except .map to [0]
orders = orders[0](order=>{
let {country, phone } = order.shipping_address
if(country === "Canada" && phone === ''){
order.shipping_address.phone = '0000000'
}
return order
})