我不确定我应该为这个问题命名,所以请随意编辑标题。
我正在运行一个有角度的应用程序并使用node.js
与express
和sequlize
组合(对于我的ORM
)
现在很多人可能知道你在ORM
使用Objects
时想要在另一个Object
内收集user
,country
对象可能有{其中的{1}}对象如下所示:
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
其中的每条记录都有id
,user_id
,item_id
现在为了确保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;
})
注意上面的例子当然是一个例子,你的对象越大越复杂!
这个过程导致代码混乱(至少在我看来),因为这不是我第一次遇到这个问题,我想知道你是否有任何解决方案,你可以做些什么来使这个过程更容易?
我一直在看lodash,看看他们是否有办法做到这一点,但遗憾的是我找不到任何让这件事变得简单的事情