2017-03-20 74 views
1

當客戶端將不贊成使用的日期格式傳遞給我時當客戶端將棄用日期格式傳遞給Moment時,將400返回給客戶端?

我正在運行一個客戶端可以向API發佈日期的節點。當他們將不贊成使用的時間格式傳遞給我的Moment解析器時,我想可能會將400返回給客戶端。我不確定這是否是一種推薦的方法,並希望您對此有所看法。在我的特殊情況下,它不應該引起太多問題,因爲它只會影響我的團隊。

如果我決定去返回400,當這種棄用的日期格式傳遞給我的API,我需要一種檢測這些事件的方式。截至目前,我在服務器日誌中獲得了不推薦使用的警告,但尚未找到解決方法。我想這一點,但由於時刻似乎並沒有拋出一個真正的錯誤(即使它肯定看起來像它從日誌中),它不是檢測棄用日期:

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

這隻會趕上真正的錯誤,不被棄用的警告。

有誰知道如何捕捉代碼中的Moment棄用警告?

回答

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版本中。

看到這個答案的詳細信息:

+0

它完美地工作。非常感謝! – kenneho

相關問題