通过用户输入在JSON对象中发送日期

时间:2018-10-04 01:15:09

标签: javascript json date express

我有一个带有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)

理想情况下,用户可以输入所需日期的任何格式,但如何接收没有错误的日期。有适当的方法来做到这一点吗?谢谢。

1 个答案:

答案 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

希望有帮助!