JavaScript对象数组转换

时间:2016-05-04 12:58:51

标签: javascript node.js object orm

我不确定我应该为这个问题命名,所以请随意编辑标题。

我正在运行一个有角度的应用程序并使用node.jsexpresssequlize组合(对于我的ORM

现在很多人可能知道你在ORM使用Objects时想要在另一个Object内收集usercountry对象可能有{其中的{1}}对象如下所示:

user = {id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code: 'DK', name: 'Denmark'}}

现在这很棒。将所有这些对象绑定在一起使得在前端使用起来更容易。

然而另一种方式相当烦人。

出于演示的目的,可以采取上述目的。但是我们添加propertyarray 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

其中的每条记录都有iduser_iditem_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,看看他们是否有办法做到这一点,但遗憾的是我找不到任何让这件事变得简单的事情

0 个答案:

没有答案