如何实现环回自关系的递归?

问题描述 投票:0回答:1

我的模特中有自我关系。如何使用环回到N级的自联接实现父子层次结构的递归?

下面给出的代码只会给我们递归到某个级别,但我想为N-LEVELS实现它?

Menu.nest = function(callback) {
    Menu.find({
        "include":{
            "relation":"menus",
            "scope":{
                "include":{
                    "relation":"menus"
                }
            }
        }
    }, function(err, results) {
       if(err) return callback(err);
       callback(err, results);
    });
}

这将恢复到有限的级别

我想实现递归以实现最多N级。谢谢

node.js mysql-workbench loopbackjs strongloop loopback
1个回答
0
投票

您的最大查询和数据深度在datasources.json中设置,请参阅docs了解详情,因此您希望这是您的最大N

{
  "db": {
    "name": "db",
    "connector": "memory",
    "maxDepthOfQuery": 5,
    "maxDepthOfData": 16
  }
}

我现在无法测试它,但这看起来像一个工作/几乎工作的片段

const o = {};

const assignFunc = (o) => {
  while(o.include) {
    o = o.include.scope;
  }
  o.include = {
    relation: "menus",
    scope:{}
  };
  return o;
}

function rec(o, n) {
  if (n == 0) {
    return o;
  }
  assignFunc(o);
  return rec(o, n - 1);
};

console.log(rec({}, 10));
© www.soinside.com 2019 - 2024. All rights reserved.