Salesforce Commerce Cloud/Demandware - OCAPI 按日期范围查询订单

标签 salesforce demandware salesforce-commerce-cloud

我正在尝试查询 Demandware (SFCC) API 以使用日期范围提取订单。发送到orders_search 可以工作,但效率似乎非常低。首先,我提取所有数据,然后过滤结果。

我想简单地查询日期范围,但我不知道该怎么做。帮助。

{ 
    query : {
        filtered_query: {
            query: {
                term_query: { fields: ["creation_date"], operator: "is_not_null" } 
            },
       filter: {
                range_filter: {
                    field: "creation_date",
                    from: "2017-08-12T00:00:00.000Z",
                    to: "2017-08-13T00:00:00.000Z",
                    from_inclusive: true
                }
            }
        }
    }
}

编辑:虽然我解决了最初的问题,但这最终变得更加复杂,因为该服务一次只允许 200 个响应。因此,首先您必须发出请求以找出有多少结果,然后多次调用该服务以获取数据。下面是与 C# 一起使用的代码。日期范围作为变量传入。

                var m_payload_count = "{ query : { filtered_query: { query: { term_query: { fields: [\"creation_date\"], operator: \"is_not_null\" } }, filter: { range_filter: { field: \"creation_date\", from: \"" + strBeginDateTime + "\", to: \"" + strEndDateTime + "\", from_inclusive: true } } } } }";

                // can only get 200 responses at a a time so make a basic call first to get the total

                m_response_count = apiClient.UploadString(m_url, m_payload_count);

                dynamic m_jsoncount = JsonConvert.DeserializeObject(m_response_count);

                // determine number of times of full api call, rounding up.  substitute begin/end dates and beginning count placeholder 

                int m_records = m_jsoncount["total"];
                int m_numbercalls = (m_records + (200 - 1)) / 200;

                dynamic m_json;

                for (int i = 0; i < m_numbercalls; i++)
                {
                    var m_payload = "{ query : { filtered_query: { query: { term_query: { fields: [\"creation_date\"], operator: \"is_not_null\" } }, filter: { range_filter: { field: \"creation_date\", from: \"" + strBeginDateTime + "\", to: \"" + strEndDateTime + "\", from_inclusive: true } } } }, select: \"(**)\", start: " + i * 200 + ", count: 200 }";

                    m_response = apiClient.UploadString(m_url, m_payload);

                    m_json = JsonConvert.DeserializeObject(m_response);

其余代码被省略,但它本质上是迭代 m_json 对象。

最佳答案

{ 
   "query" :
   { 
      "filtered_query": {
            "query": { match_all_query: {} },
            "filter": {
                "range_filter": {
                    "field": "creation_date",
                    "from": "2016-01-01T00:00:00.000Z"
                }
            }
        }
   },
   "select" : "(**)"
}

关于Salesforce Commerce Cloud/Demandware - OCAPI 按日期范围查询订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764449/

相关文章:

java - Salesforce - 通过 API 创建案例后触发自动响应规则

model-view-controller - Demandware MVC 概念

javascript - 如何在javascript中将xml文件转换为csv文件

Demandware/SFCC 先决条件

google-analytics - 当页面导航到第三方页面然后使用 Google 跟踪代码管理器转到确认页面时,如何跟踪结账行为?

java - 使用 talend 进行 salesforce Org 同步

java - 如何在 Salesforce 应用程序中使用 Rest API 重置用户密码?

java - 以编程方式将文件上传到 SalesForce

javascript - Babel 无法解析 "for each...in"语句

e-commerce - demandware/SFCC 中的 Content Asset 和 Content Slot 之间的主要区别是什么?