我的数据库中有2个主要节点:用户和项目。
每个用户都可以分配到不同角色的多个项目。
在阅读了如何构建多对多关系后,我最终认为它应该是这样的:
users : {
user1 : {
name : blah,
email : a@a.com,
projects : {
projects1key : true,
projects2key : true
}
}
}
projects : {
project1key : {
name : blahserve,
category : blahbers,
providers : {
user1 : true,
user7 : true
}
}
}
我无法弄清楚的是我如何为每个用户分配一个角色。
如果我需要向项目中的每个用户添加role
(字符串),新数据库结构应该是什么样的?
如果我错了,请纠正我:当我将用户分配给项目时,我需要创建2个新节点:我的用户节点中的projectkey节点和projectkeynode中的userkey节点。是吗?
更新
由于这里给出的答案是正确的,但不确定它是否适合我的用例,这是我的用例:
答案 0 :(得分:2)
或者只是简单地你可以一起添加一个不同的节点: -
如果我需要向项目中的每个用户添加角色(字符串),新数据库结构应该是什么样的?
users : {
user1 : {
name : blah,
email : a@a.com,
}
},
projects : {
projectKey1 : {
name : blahserve,
category : blahbers,
}
},
projectsLists:{
user1 :{
projectKey1 : true,
projectKey2 : true
}
},
projectsRoles :{
projectKey1 : {
user1 : provider,
user2 : editor,
....
}
}
如果我错了,请纠正我:当我将用户分配给项目时,我需要创建2个新节点:我的用户节点中的projectkey节点和projectkeynode中的userkey节点。是吗?
始终更喜欢更扁平的数据库结构。因此,使用此结构,您只需添加或更新用户的角色一次。