JavaScript数组对象转换
我不完全确定我应该命名这个问题,所以随时编辑标题。
我正在运行一个angular度的应用程序,并使用node.js
结合express
和sequlize
(对于我的ORM
)
现在,很多人可能知道何时使用ORM
来处理另一个Objects
内部的Object
,例如, user
对象中可能有一个country
对象,如下所示:
user = {id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code: 'DK', name: 'Denmark'}}
现在这很好。 将所有这些对象绑定在一起使得在前端工作起来更容易。
然而相反,这是相当烦人的。
以示范为目的,以上述的对象为例。 但让我们添加一个property
的array of items
user.items = [{id: 1 , name:'item1'}, {id: 2, name: 'item2'}]
现在,如果我想将这个对象添加到我的数据库,我会发送组合的对象到我的快递路线:
var user = { id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code:'DK', name: 'Denmark'} items: [ {id: 1, name: 'item1'}, {id: 2, name: 'item2'} ] }
现在事情变得凌乱了
比如说你有下面的表格:
user_has_items
每个logging都有一个id
, user_id
, item_id
现在,为了确保user.items
中的对象与表格匹配,您现在必须通过user.items
循环和编辑上述对象来编写体操代码。
就像这样:
user.items.forEach(function (x) { x.item_id = x.id; x.id = null; // To make sure the database does not set the id (since this is auto inc) x.user_id = user.id; })
注意上面的例子当然是一个例子,它变得越复杂,你的对象就越大!
这个过程导致了混乱的代码(至less在我看来),因为这不是我第一次遇到这个问题,我想知道你是否有任何解决scheme,你可能会做什么,使这个过程更容易?
我一直在看lodash ,看看他们是否有这样做的方式,但很遗憾,我找不到任何使这个简单