gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:07 24 4
gpt4 key购买 nike

我正在用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com