当客户端将已弃用的日期格式传递给我的
时我正在运行一个节点,客户端可以在该节点上发布日期到API。当他们将弃用的时间格式传递给我的Moment解析器时,我想可能会向客户端返回400。我不确定这是否是推荐的方法,并希望您对此有所了解。在我的特殊情况下,它不应该引起太多问题,因为它只会影响我的团队。
如果我决定在将这种已弃用的日期格式传递给我的API时返回400,我需要一种检测这些事件的方法。截至目前,我在服务器日志中收到了已弃用的警告,但尚未找到解决此问题的方法。我尝试过这个,但由于Moment似乎没有抛出真正的错误(即使从日志中看起来确实如此),它也没有检测到已弃用的日期:
try {
my_date = Moment(request.body.date)
}
catch (err) {
console.log("ERROR");
}
这只会捕获真正的错误,而不是已弃用的警告。
有谁知道如何在代码中捕获Moment已弃用的警告?
答案 0 :(得分:1)
要根据您当前支持的格式查看日期是否有效,请使用以下内容:
var formats = [
moment.ISO_8601,
"MM/DD/YYYY HH:mm:ss",
// some other formats that you need ...
];
if (!moment(request.body.date, formats, true).isValid()) {
return res.status(400).send('Invalid date format');
}
// handle request
始终使用true
作为moment()
的第三个参数进行严格验证。否则它也会尝试匹配无效日期。
并且始终提供您要使用的受支持格式的明确列表,否则您将无法确定匹配的内容以及不匹配的内容,尤其是在可能发生变化的Moment的未来版本中。
有关详细信息,请参阅此答案: