我是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的新手,我有点不知道如何让这个工作。
1条答案
按热度按时间wpx232ag1#
在这个例子中,逻辑是正确的,你只需要把
return eventPresent
替换为res.status(200).json(eventPresent)
--并把它放在for循环之外,还把eventPresent.push(i)
替换为eventPresent.push(event[i])
,因为你只是把索引推入数组,而不是把实际的元素推入数组:希望这能有所帮助!:)