Как можно реализовать рекурсию для петлевых отношений с самим собой? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть отношение к себе в моей модели. Как реализовать рекурсию для иерархии родитель-потомок, используя самостоятельное соединение в обратной связи до N-уровня?

Код, приведенный ниже, даст нам рекурсию только до определенного уровня, но я хочу реализовать его для N-УРОВНЕЙ?

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 уровней для этого. Спасибо

1 Ответ

0 голосов
/ 26 апреля 2019

Ваша максимальная глубина запроса и данных установлена ​​в datasources.json, см. документы для подробностей, так что вы хотите, чтобы это было вашим максимальным 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));
...