Post 响应的提取后过滤

Post 响应的提取后过滤,post,response,requestfiltering,Post,Response,Requestfiltering,我正在尝试使用PostFetch钩子从我的集合中筛选某些结果。我有一组我正在尝试筛选的日期。我只希望回复是今天或未来的日期。 我可以使用我的代码确定日志中的哪些日期,但无论我做什么,我似乎都无法正确地使用代码过滤掉那些已过的日期。我目前已将其设置为“全部通过”,如何才能使此筛选正常工作?任何帮助都将不胜感激 function onPostFetch(request, response, modules) { var moment = modules.moment(); var logge

我正在尝试使用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();
         }
         }
}
函数onPostFetch(请求、响应、模块)
{
var moment=modules.moment();
var logger=modules.logger;
var today=新日期();

for(var i=0;i一个问题是在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();