我有一个应用程序建立在角度2,在发送http请求从oracle数据库中获取数据的服务,使用node-oracle DB和express框架。我已经使用express构建了rest api,现在我需要在请求参数中传递日期,express必须解析该参数并发送响应。如何在查询参数中传递日期,以及如何在快速rest api中解析该日期。
发布于 2019-02-14 22:24:21
使用iso格式'yyyy-mm-dd‘传递日期
const date = new Date();
http.get(`url/test?date=${date.toISOString()}`在快递方面
app.get(/test', async function(req, res) {
const dateInServer = newDate(req.query.date);});
发布于 2017-10-25 16:10:55
Date是仅有的几种javascript类型之一,当您对对象进行Stringify时,它不会被存储。
你可以访问Issues with Date() when using JSON.stringify() and JSON.parse()了解更多信息。
您可以在此处选择以下任一选项:
在输入时拆分日期
如果你只想找一个日期,你可以把它分成3个参数
var valueToSend = {
date: {
day: date.getDate(),
month: date.getMonth(),
year: date.getYear()
}然后在快递方面
new Date(req.body.year, req.body.month, req.body.date)这种方法的优点是很容易验证,并且您只需要发送所需的信息。缺点是它需要更多的代码
在express端使用正则表达式
您可以制作一个中间件来测试日期格式的字符串,并使用JSON.parse恢复函数作为第二个参数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse将其转换为日期
例如:
module.exports = (req, res, next) => {
for (var bodyKey in req.body) {
if (req.body.hasOwnProperty(bodyKey)) {
req.body[bodyKey] = JSON.parse(req.body[bodyKey],dateTimeReviver);
}
}
next();
};
function dateTimeReviver(key, value) {
var a;
if (typeof value === 'string') {
a = /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z/.exec(value);
if (a) {
return new Date(a[0]);
}
}
return value;
}发布于 2017-10-25 21:50:51
我写了一个series on dates,介绍了它们在客户端、中间层和Oracle数据库之间移动时发生的情况。这是part that touches on node-oracledb。你可能会发现其中的一些信息很有用。
Peter的答案已经涵盖了解析来自客户端的ISO8601字符串的日期。我要补充的是,如果要将日期插入到date或TIMESTAMP列中,您需要在连接到Oracle时确保正确的时区。The doc也涵盖了这一点。
https://stackoverflow.com/questions/46926743
复制相似问题