【问题标题】:PostFetch Filtering of Response响应的 PostFetch 过滤
【发布时间】:2014-09-24 22:14:02
【问题描述】:

我正在尝试使用 PostFetch 挂钩从我的收藏中过滤某些结果。我有一组要过滤的日期。我只希望响应是今天或将来的日期。 我可以使用我的代码确定哪些是我的日志中的哪些,但无论我做什么,我似乎都无法正确获取代码来过滤掉那些已经过去的日期。我目前将它设置为通过所有,我怎样才能让这个过滤工作?任何帮助,将不胜感激。

function onPostFetch(request, response, modules)
{
  var moment = modules.moment();
  var logger = modules.logger;
  var today= new Date();
    for (var i =0; i<60; i++)
         {
   var eventDate= response.body[i].date;
     if (modules.moment(eventDate).isBefore(today))
            {

    response.continue();
            logger.info("Event Has Passed")

        }
     else
         {
       logger.info("Event is Upcoming")
       response.continue();
         }
         }
}

【问题讨论】:

    标签: post response requestfiltering


    【解决方案1】:

    一个问题是在你的 for 循环中调用 response.continue。 Response.continue 返回响应并停止进一步处理,因此在第一次通过循环时,您将返回而不处理其他项目。

    尝试在循环中删除数组项会很棘手,因为当您从数组中删除一项时,数组会重新索引。有两种方法可以完成您的目标:

    创建一个数组来保存您最终要返回的元素,然后用这个新数组替换 response.body

    var eventDate = "";
    var filteredResults = [];
    
    for (var i = 0; i<response.body.length;i++) {
      eventDate= response.body[i].date; 
      if (modules.moment(eventDate).isBefore(today) {
        filteredResults.push(response.body[i];
      }
    }
    response.body = filteredResults;
    response.continue();
    

    拼接数组并重新设置索引

        var eventDate = "";
    
        for (i = 0; i < response.body.length; i++) {
          eventDate = response.body[i].date;
    
          if (!modules.moment(eventDate).isBefore(today)) {
            response.body.splice(i, 1);
            i--; // decrement
          }
        }
    
    response.continue();
    

    反向遍历循环

    var eventDate = "";
    for (i = response.body.length; i >= 0; i--) {
      eventDate = response.body[i].date;
    
      if (!modules.moment(eventDate).isBefore(today)) {
        response.body.splice(i, 1);
      }
    }
    response.continue();
    

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 2021-08-02
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多