当客户端将弃用date格式传递给Moment时,将400返回给客户端?

当客户将不赞成的date格式传递给我的

我正在运行一个节点,客户可以在该节点上发布date。 当他们将不赞成使用的时间格式传递给我的Momentparsing器时,我想可能会将400返回给客户端。 我不确定这是不是一个推荐的方法,并希望你的看法。 在我个人的情况下,不应该引起太多问题,因为这只会影响我的团队。

如果我决定去返回400,当这种弃用的date格式传递给我的API,我需要一种方法来检测这些事件。 截至目前,我在服务器日志中获得不推荐使用的警告,但还没有find办法。 我试过这个,但是因为Moment似乎没有抛出一个真正的错误(即使它看起来像是从日志中看到的那样),但是它并没有检测到不被使用的date:

try { my_date = Moment(request.body.date) } catch (err) { console.log("ERROR"); } 

这只会发现真正的错误,而不是弃用的警告。

有没有人知道如何捕捉代码中不推荐使用的警告?

要根据您当前支持的格式查看date是否有效,请使用如下所示的内容:

 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 

对于严格validation,始终使用true作为moment()的第三个参数。 否则,它会尝试匹配无效的date。

并且始终提供您想要使用的支持格式的明确列表,否则您将无法确定匹配的内容和不匹配的内容,特别是在将来可能更改的Moment版本中。

看到这个答案更多的信息:

  • 检查一个string是否是一个date值