有没有一个好的框架或方法来重构JavaScript对象

Is there a good framework or approach for restructuring JavaScript objects?

本文关键字:方法 重构 JavaScript 对象 框架 有一个      更新时间:2023-09-26

我正在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"answers"last_name"属性已从snake_case转换为camelCase

很明显,我可以手工编写这些转换中的每一个,但这将是非常低效和容易出错的。你知道有什么框架或方法可以缓解这种痛苦吗?

附言:我本质上是在寻找一种类似于Java框架的东西,叫做dozer。

在将对象推送到RESTAPI之前,您需要一个自定义函数来转换从DB返回的对象。

一个例子:

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);

显然,这可以进行清理/自定义以适应您的代码(例如:您的DB查询可能是异步的,因此restObject需要反映这一点)。此外,当数据库发送回一个JSON对象时,您需要考虑到这一点。