环回将日期之类的字符串转换为日期,如何防止它
Posted
技术标签:
【中文标题】环回将日期之类的字符串转换为日期,如何防止它【英文标题】:loopback converts date like strings to Date, how to prevent it 【发布时间】:2020-06-06 01:56:53 【问题描述】:我有一个肥皂服务返回日期时间(稍后检查乐观锁) 如果我在邮递员中调用肥皂服务,这就是我收到的结果
<ns2:outcomes>
<ns2:outcomeId>18743</ns2:outcomeId>
<ns2:outcomeName>sadfagdadg</ns2:outcomeName>
<ns2:channelsId>4</ns2:channelsId>
<ns2:createdBy>tstsdm01</ns2:createdBy>
<ns2:createdTimestamp>2020-02-20T10:22:55.035222000-05:00</ns2:createdTimestamp>
<ns2:editedBy>tstsdm01</ns2:editedBy>
<ns2:editedTimestamp>2020-02-20T10:22:55.035222000-05:00</ns2:editedTimestamp>
<ns2:status>ACT</ns2:status>
</ns2:outcomes>
然后我通过lb soap
生成模型,这就是模型
"name": "OutcomeType",
"base": "Model",
"idInjection": false,
"options":
"validateUpsert": true
,
"forceId": "false",
"excludeBaseProperties": [
"id"
],
"properties":
"outcomeId":
"type": "number"
,
"outcomeName":
"type": "string"
,
"channelsId":
"type": "number"
,
"listOrder":
"type": "number"
,
"createdBy":
"type": "string"
,
"createdTimestamp":
"type": "string"
,
"editedBy":
"type": "string"
,
"editedTimestamp":
"type": "string"
,
"status":
"type": "string"
,
"validations": [],
"relations": ,
"acls": [],
"methods":
然后我通过环回调用与 REST api 相同的端点 我收到的是
"outcomeId": 18743,
"outcomeName": "sadfagdadg",
"channelsId": 4,
"createdBy": "tstsdm01",
"createdTimestamp": "2020-02-20T15:22:55.035Z",
"editedBy": "tstsdm01",
"editedTimestamp": "2020-02-20T15:22:55.035Z",
"status": "ACT"
,
日期的精度发生了变化,我只想将值视为字符串而不是日期时间
【问题讨论】:
【参考方案1】:如果其他人有同样的问题
strong-soap
库中有代码,它通过 wsdl 文件(url)中类型名称的协定工作
因此,如果类型名称是 date
或 time
或 dateTime
,它会将其转换为 javascript Date
,无论您的模型数据类型是什么。
为了解决我从url下载wsdl并将其存储在项目中,然后我将下载文件中的dateTime
更改为string
。
在我的datasources.json
"outcome":
"url": "http://localhost:8080/gateway-ws/services/outcome-v1",
"name": "outcome",
"wsdl": "server/wsdl/outcome-v1.wsdl.xml",
"remotingEnabled": true,
"connector": "soap"
,
【讨论】:
谢谢。用于解析的强肥皂实现已超时完成。我无法在他们的库中追踪相同的代码【参考方案2】:xsd:date
要求您仅指定日期,例如 2021-11-25
不带时间元素。
问题在于,在 SOAP 和 JSON 之间转换的一些 xml 处理程序(如 strong-soap
中的处理程序)以相同的方式处理 date
和 dateTime
。所以他们将日期字符串转换为Date
,反之亦然。
现在,当您提供 dateTime
时,当 SOAP 服务器需要 date
时,SOAP 服务器可能会崩溃。这是因为提供的 dateTime
值具有 SOAP 服务器没有预料到的额外 T00:00:00.000Z
。
就我而言,为了解决这个问题,我将 SOAP 服务器上的 date
字段的数据类型修改为 dateTime
。
【讨论】:
以上是关于环回将日期之类的字符串转换为日期,如何防止它的主要内容,如果未能解决你的问题,请参考以下文章