Node.js 如何在node/MongoDB中实现文档父级
我正在尝试使用mongodb为节点实现我自己的acl模块。我知道其中一些已经存在,但出于体验目的,我想创建自己的:) 我们将拥有Node.js 如何在node/MongoDB中实现文档父级,node.js,mongodb,Node.js,Mongodb,我正在尝试使用mongodb为节点实现我自己的acl模块。我知道其中一些已经存在,但出于体验目的,我想创建自己的:) 我们将拥有角色,以及用户。每个角色将对某些资源拥有一些权限。每个角色也可能有一个父角色。这个养育孩子的部分现在阻碍了我 1) 我如何实现这一点?我读了另一篇SO帖子,指向mongodb文档:,所以我认为最好的方法似乎是用引用实现这些东西: roles collection : [{ _id: "my_role_1" }, { _id: "my_role_2", p
角色
,以及用户
。每个角色
将对某些资源
拥有一些权限
。每个角色
也可能有一个父角色。这个养育孩子的部分现在阻碍了我
1) 我如何实现这一点?我读了另一篇SO帖子,指向mongodb文档:,所以我认为最好的方法似乎是用引用实现这些东西:
roles collection :
[{
_id: "my_role_1"
},
{
_id: "my_role_2",
parents: ["my_role_1"]
},
{
_id: "my_role_3",
parents: ["my_role_2"]
}]
这样做对吗?由于nodejs是异步的,所以要得到我的角色3的“家长树”简直是一场噩梦(我指的是我的角色3——我的角色2——我的角色1
):
2) 正如我所说的,node_acl是一个已经在这样做的节点模块。我看到他们为每个角色创建了一个集合。由于我可能有很多不同的角色,我决定放弃这个解决方案,因为在mongodb文档中,他们说当查询包含一些集合时,性能会更好。我的选择正确吗,避免这种方法
谢谢。这将使这个模式更容易处理。哦,谢谢!我来看看!
function getRoleParenting(roleName, callback) {
this.db.collection('roles', function(err, collection) {
collection.findOne({role: roleName}, function(err, role) {
role.parents.forEach(function(roleParent) {
// I know I should call the function recursively,
// But I can't figure out how to get the full "tree"
// at the end... In a sync way, I would use "return"...
// How can I do here ?
// getRoleParenting(roleParent._id);
}
});
});
}