【问题标题】:Transform Response From Azure Table Storage With Node使用节点转换来自 Azure 表存储的响应
【发布时间】:2016-03-23 21:53:36
【问题描述】:

我正在使用从 Azure 表存储读取的 Node 创建一个 REST API。

输出类似于以下内容:

[  
   {  
      "PartitionKey":{  
         "$":"Edm.String",
         "_":"sdsdsdsd"
      },
      "RowKey":{  
         "$":"Edm.String",
         "_":"sdsdsdsdsd"
      },
      "Timestamp":{  
         "$":"Edm.DateTime",
         "_":"2015-08-20T01:56:37.499Z"
      },
      "Destination":{  
         "_":"sdsdsdsdsd"
      },
      "QueryParameters":{  
         "_":"sdsddsadsadsd"
      },
      "Referrer":{  
         "_":"sddsadsadss"
      },
      "RequestTime":{  
         "$":"Edm.DateTime",
         "_":"sdsddsdsd"
      },
      "SiteUrl":{  
         "_":"sdsdsdsdd"
      },
      ".metadata":{  
         "etag":"W/"datetime'2015-08-20T01:56:37.4999599Z'""
      }
   }
]

我正在使用 lodash,因为我想转换响应,使其具有以下内容:

  • 所有属性都是小写的。例如。 PartitionKey 变成 partitionkey
  • 删除所有具有键“$”的属性
  • 如果它们只是对象中的单个属性并且其键是“_”,则将值分配给父对象并删除对对象的需要。

有人可以帮忙吗?

【问题讨论】:

    标签: node.js azure-storage lodash hapijs


    【解决方案1】:

    考虑到您将 json 对象分配给 raw 对象, 这是在 lodash 上执行此操作的一种方法。

    在处理值之前首先对键进行规范化:

    const _ = require('lodash')
    
    const lowKey = _.mapKeys(raw, (v,k) => k.toLowerCase())[0]
    const norm = _.mapValues(lowKey, (v)=> {
        delete v.$
        if(Object.keys(v).length ===1 && v._) return v._;
        else return v;
    });
    console.log(norm)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多