Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在node/MongoDB中实现文档父级_Node.js_Mongodb - Fatal编程技术网

Node.js 如何在node/MongoDB中实现文档父级

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

我正在尝试使用mongodb为节点实现我自己的acl模块。我知道其中一些已经存在,但出于体验目的,我想创建自己的:)

我们将拥有
角色
,以及
用户
。每个
角色
将对某些
资源
拥有一些
权限
。每个
角色
也可能有一个父角色。这个养育孩子的部分现在阻碍了我

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);
            }
       });
    });
}