javascript - 是否有一个好的框架或方法来重构 JavaScript 对象?

标签 javascript node.js rest orm mapping

我正在用 Node.js 编写一个应用程序。我需要将从数据库层返回的 JavaScript 对象转换为需要从 REST 服务返回的 JavaScript 对象。我可能需要添加或删除某些属性,或者可能需要展平某些结构。例如,这是从数据库层返回的 User 对象:

{
    "id": 1234,
    "username": "jsmith",
    "person": {
        "first_name": "John",
        "last_name": "Smith"
    }
}

我想从REST层返回的对象是

{
    "_links": {
        "self": { "href": "/users/jsmith" },
    },
    "username": "jsmith",
    "firstName": "John",
    "lastName": "Smith"
}

以下是更改:

  1. “id”属性已删除
  2. 添加了“链接”部分
  3. “person”对象已展平为父对象
  4. “first_name”和“last_name”属性已从 Snake_Case 转换为 CamelCase

我显然可以对这些转换中的每一个进行手动编码,但这会非常低效并且容易出错。您知道有什么框架或方法可以减轻这种痛苦吗?

附注我本质上是在寻找类似于名为 dozer 的 Java 框架的东西。 .

最佳答案

您需要一个自定义函数来转换从数据库返回的对象,然后再将其推送到 RESTAPI。

一个例子:

var dbObject = db.query(...); //this is what you get from your DB query

//Here is your REST API object that you will send back
var restObject = (function(obj){
  var link = {
    self: {
        href: "/users/" + obj.username
    }
  };

  var username = obj.username;
  var firstname = obj.person.first_name;
  var lastname = obj.person.last_name;

  return JSON.stringify({
    _links: link,
    username: username,
    firstName: firstname,
    lastName: lastname
  })

})(dbObject);

显然,这可以清理/定制以适合您的代码(例如:您的数据库查询可能是异步的,因此 restObject 将需要反射(reflect)这一点)。另外,假设您的数据库发回一个 JSON 对象,您将需要考虑这一点。

关于javascript - 是否有一个好的框架或方法来重构 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107683/

相关文章:

c++ - C++ REST SDK 中的 URI 编码 ("Casablanca")

javascript - 在异步函数中调用函数(渲染组件)

php - 页面重新加载时标题中随机出现中断

javascript - 哟发电机子发电机不可用。当进行 NPM 安装时,它不会拉取所有代码

java - 显示从 json 响应中检索到的所有内容

javascript - 如何通过 Angular2 使用 REST API?

javascript - Zeroclipboard-rails 不工作但没有错误

javascript - dataLayer.push 重复

javascript - node.js 中的 require(../) 是如何工作的?

node.js - 为什么 webpack 在运行 npm run dev 时会报错