我有一个带有Nodejs / Express的API,该API接收来自表单的输入,并带有日期选项作为请求正文。
我目前正在发送这种日期格式YYYY-mm-dd
,并且也尝试过这种格式dd/mm/YYYY
,但是当我在Postman中进行测试时出现以下错误,服务器崩溃了:
UnhandledPromiseRejectionWarning: ValidationError: profile validation failed: experience.0.from: Cast to Date failed for value "2017-14-09" at path
"from"
at new ValidationError (D:\ReactDev\MERN Dev\DevConnect\dev-connect\node_modules\mongoose\lib\error\validation.js:30:11)
at model.Document.invalidate (D:\ReactDev\MERN Dev\DevConnect\dev-connect\node_modules\mongoose\lib\document.js:1957:32)
at EmbeddedDocument.invalidate (D:\ReactDev\MERN Dev\DevConnect\dev-connect\node_modules\mongoose\lib\types\embedded.js:287:19)
理想情况下,用户可以输入所需日期的任何格式,但如何接收没有错误的日期。有适当的方法来做到这一点吗?谢谢。
答案 0 :(得分:0)
好的,不确定您的后端NodeJS / Express代码是什么,但是假设您有一个这样的POST路由可以接收日期:
app.post('/', function (req, res) {
//extract the user submitted date from the request body
var rawdate = req.body.date
//create a new Date object
var date = new Date(rawdate)
//check that the date object is valid (here a helpful link: https://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript)
//if the date is valid, do your processing then send a response
//if the date is not valid, send an error http response back to the user
...
})
因此基本上通过将其传递给Date()
,您可以将任何日期字符串转换为Date对象,您可以根据需要进行操作。这里是对文档的引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
我尝试使用两种格式来显示一个示例: terminal screenshot
希望有帮助!