javascript 构建一个函数,该函数返回NodeJ中选定时间帧内当前正在发生的事件

8zzbczxx  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(97)

我是NodeJS的新手,我正在尝试建立一个事件管理系统,用户可以看到正在发生的事件,即将发生的事件和过去的事件。我已经建立了一个名为events的模型,它有属性startDate和endDate,用户在创建事件时可以选择它们。我需要列出当前正在发生的事件,这是我目前建立的函数,但是,它不起作用,我很肯定语法上也有一些错误。我真的很感激任何人在这方面的帮助:)

exports.listPresent = async (req, res) => {
    try {

        const event = await Event.find({})

        const eventPresent = [];

        for (let i = 0; i < event.length; i++) {

            var dateArr = event[i].startDate.toString().split("-");
            var dateArr2 = event[i].endDate.toString().split("-");
            var inputDate = new Date('"' + dateArr[2] + "-" + dateArr[1] + "-" + dateArr[0] + '"').setHours(0, 0, 0, 0);

            var inputDate2 = new Date('"' + dateArr2[2] + "-" + dateArr2[1] + "-" + dateArr2[0] + '"').setHours(0, 0, 0, 0);

            var toDay = new Date().setHours(0, 0, 0, 0);

            if (event[i].startDate != null && event[i].startDate != '' && event[i].endDate !=null && event[i].endDate != '') {

                if(inputDate == toDay || (inputDate >= toDay && inputDate <= inputDate2)){  
                     eventPresent.push(i);
                }
            }
            return eventPresent;;
          }

    } catch (error) {
    res.status(500).json( { error: error.message });
    }
};

我试着写一个函数(上面的那个),但是我是JavaScript的新手,我有点不知道如何让这个工作。

wpx232ag

wpx232ag1#

在这个例子中,逻辑是正确的,你只需要把return eventPresent替换为res.status(200).json(eventPresent)--并把它放在for循环之外,还把eventPresent.push(i)替换为eventPresent.push(event[i]),因为你只是把索引推入数组,而不是把实际的元素推入数组:

exports.listPresent = async (req, res) => {
  try {
    const event = await Event.find({})
    const eventPresent = [];

    for (let i = 0; i < event.length; i++) {
      var dateArr = event[i].startDate.toString().split("-");
      var dateArr2 = event[i].endDate.toString().split("-");
      var inputDate = new Date('"' + dateArr[2] + "-" + dateArr[1] + "-" + dateArr[0] + '"').setHours(0, 0, 0, 0);

      var inputDate2 = new Date('"' + dateArr2[2] + "-" + dateArr2[1] + "-" + dateArr2[0] + '"').setHours(0, 0, 0, 0);

      var toDay = new Date().setHours(0, 0, 0, 0);

      if (event[i].startDate != null && event[i].startDate != '' && event[i].endDate !=null && event[i].endDate != '') {

        if (inputDate == toDay || (inputDate >= toDay && inputDate <= inputDate2)){  
          eventPresent.push(event[i]);
        }
      }  
    }

    res.status(200).json(eventPresent);
  } catch (error) {
    res.status(500).json( { error: error.message });
  }
};

希望这能有所帮助!:)

相关问题