我正在处理一个API,它返回自然日期的自然日期,当一月有效自然日期时请求中传递5,2016 或 unix时间戳。但是,如果我传递无效日期,则响应应返回 null 为{ unix : null, natural : null
}。
当我传入有效日期时,它会返回预期的响应。但它运行两个代码块,即有效块和无效块。else
块中的console.log("到达")也会运行并记录在控制台中。该声明应该运行吗?考虑到if
块已经完成。
这是代码
var moment = require('moment');
var express = require('express');
var app = express();
app.use(express.static('public'));
app.get(/\/$/,(req,res) => {
res.sendFile(__dirname + '/views/index.html');
});
app.get('/:date',(req,res) => {
var date,unix,natural;
if(moment(req.params.date, "MMMM DD, YYYY").isValid() || moment(Number(req.params.date),"X").isValid())
{
if(moment(req.params.date,"MMMM D, YYYY",true).isValid()){
date = moment(req.params.date,"MMMM D, YYYY");
console.log('set from MM');
unix = date.format("X");
natural = date.format("MMMM DD, YYYY");
res.json({
unix: unix,
natural: natural
});
}
else if(moment(Number(req.params.date),"X").isValid()){
date = moment(Number(req.params.date),"X");
natural = date.format("MMMM DD, YYYY");
unix = date.format("X");
console.log('set from X');
res.json({
unix: unix,
natural: natural
});
}
}
else{
console.log("reach");
res.send({
unix: null,
natural: null
});
}
});
var listener = app.listen(process.env.PORT, () => {
console.log('Your app is listening on port ' + listener.address().port);
});
链接到实时版