javascript - 从用户输入发送 JSON 对象中的日期
问题描述
我有一个带有 Nodejs/Express 的 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)
理想情况下,用户可以输入他们想要的任何格式的日期,但我如何才能正确接收输入。有没有合适的方法来做到这一点?谢谢。
解决方案
好的,不确定你的后端 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
我尝试使用您的两种格式向您展示一个示例: 终端屏幕截图
希望能帮助到你!
推荐阅读
- bash - 为什么 shell 执行的是别名而不是函数?
- excel - 从复制的范围创建组合框
- java - 我的移动应用程序无法记录通话(java)
- amazon-web-services - AWS RDS 代理目标组 - 会话固定过滤器不起作用
- java - Firebase onVerificationCompleted 在最新版本中没有被调用
- python - QTableView中的QFileDialog:是否可以在目录和文件之间切换?
- python - 合并 2 个具有不同列的数据集并填充值
- javascript - 为什么以下 javascript 承诺链接不按顺序
- javascript - 如何自定义flask返回脚本标签提醒功能
- angular - Angular 中的开放层