我正在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"
}
以下是更改:
我显然可以对这些转换中的每一个进行手工编码,但这样效率很低且容易出错。你知道任何可以缓解这种痛苦的框架或方法吗?
P.S。我基本上在寻找类似于名为dozer的Java框架。
答案 0 :(得分:0)
在将数据推送到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
需要反映这一点)。此外,假设您的数据库发送回JSON对象,您将需要考虑到这一点。