node.js - 使用 Node 转换来自 Azure 表存储的响应

标签 node.js azure-storage lodash hapi.js

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

输出类似于以下内容:

[  
   {  
      "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 成为分区键
  • 删除所有具有键“$”的属性
  • 如果它们只是对象中的单个属性且其键为“_”,则将该值分配给父级并删除对该对象的需要。

有人可以帮忙吗?

最佳答案

考虑到您将 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)

关于node.js - 使用 Node 转换来自 Azure 表存储的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334433/

相关文章:

javascript - 为什么 webpack 在使用 "import * as _"时不摇晃 lodash?

javascript - 将 Node/Sequelize 应用程序部署到 heroku - PORT 问题

node.js - java.net.SocketInputStream.read(来源未知)处的连接重置 - Node.js - Azure 文件服务

javascript - Lodash 反转 key 的方法 : values in object

azure - Azcopy - 仅复制不带文件夹的文件

architecture - 使用 Azure 存储表作为队列并由多个辅助角色处理?

javascript - 将所有对象键设置为 false

node.js - 将模型参数传递给 Mongoose 模型

node.js - 为 GKE kubernetes 集群选择 Node 大小

javascript - 使用 Bluebird promise