JavaScript对象数组转换
我不太确定我该给这个问题起什么名字,所以请随意编辑标题 我正在运行一个angular应用程序,并使用JavaScript对象数组转换,javascript,node.js,object,orm,Javascript,Node.js,Object,Orm,我不太确定我该给这个问题起什么名字,所以请随意编辑标题 我正在运行一个angular应用程序,并使用node.js与express和Sequalize(用于我的ORM) 现在,许多人可能知道,当您使用ORM时,您希望在另一个对象的内部收集对象,例如用户对象的内部可能有一个国家对象,如下所示: user = {id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code: 'DK', name: 'Denmark'}} 现在
node.js
与express
和Sequalize
(用于我的ORM
)
现在,许多人可能知道,当您使用ORM
时,您希望在另一个对象的内部收集对象
,例如用户
对象的内部可能有一个国家
对象,如下所示:
user = {id: 222, username: 'Marc', name: 'Marc Ras', country: {id: 1, code: 'DK', name: 'Denmark'}}
现在这很好。将所有这些对象绑定在一起可以使前端的工作更加轻松
然而,另一种方式是相当烦人的
为了演示的目的,让我们以上面的对象为例。但是让我们添加一个属性
一个项目数组
user.items = [{id: 1 , name:'item1'}, {id: 2, name: 'item2'}]
现在,如果我希望将此对象添加到我的数据库中,我会将组合对象发送到我的express route:
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
,用户id
,项目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;
})
请注意,上面当然是一个例子,对象越大,它就越复杂
这个过程会导致混乱的代码(至少在我看来),由于这不是我第一次遇到这个问题,我想知道你们中是否有人有任何解决方案,可以做些什么来简化这个过程
我一直在看他们是否有办法做到这一点,但遗憾的是,我找不到任何使这一点变得简单的方法你应该添加你试图让问题更清楚的代码-“你现在必须通过循环和编辑上面的对象使代码更符合实际”不清楚,例如。@Andy我同意,我会将其添加到我的question@Andy添加了一些代码:)是否希望将用户对象上的items数组重新构造为所需的格式或创建新的对象数组?