环回将日期之类的字符串转换为日期,如何防止它

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)中类型名称的协定工作

因此,如果类型名称是 datetimedateTime,它会将其转换为 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 中的处理程序)以相同的方式处理 datedateTime。所以他们将日期字符串转换为Date,反之亦然。

现在,当您提供 dateTime 时,当 SOAP 服务器需要 date 时,SOAP 服务器可能会崩溃。这是因为提供的 dateTime 值具有 SOAP 服务器没有预料到的额外 T00:00:00.000Z

就我而言,为了解决这个问题,我将 SOAP 服务器上的 date 字段的数据类型修改为 dateTime

【讨论】:

以上是关于环回将日期之类的字符串转换为日期,如何防止它的主要内容,如果未能解决你的问题,请参考以下文章

防止日期转换溢出

如何将字符串日期转换为不同的字符串日期? [复制]

如何将时间字符串转换为自定义日期格式?

将字符串转换为日期时间

来自环回的 mongodb 中格式为 yyyy--mm-dd 的字符串日期上的 gte

oracle中存储的一串数字“1207907336781”,应该是日期之类的,怎么转换?