javascript - 获取子类别的最后一个子 ID

标签 javascript node.js mongodb

我有一个具有以下结构的 json 数据类别数组。

我的目标是当我将“id”作为路由参数传递时,

  • 我应该得到与 ID 匹配的类别。
  • 如果接收到的类别对象有字段hasSubCategory=false,那么我应该返回类别文档作为响应。
  • 但是如果接收到的类别对象有字段hasSubCategory=true,我应该再次执行数据库操作通过检查对象id是否匹配parentId来查询所有子类别json 数组的。在这种情况下,如果子类别再次具有 hasSubCategory=true,则需要另一个查询来检查当前 obj 的 id 与 json 数组的 parentId。当接收到的子类别也有hasSubCategory=true时,需要再次查询。所以它应该查询直到hasSubCategory=false

简单地说,如果下面的对象有hasSubCategory=true,我应该检查整个json数据是否对象id匹配任何parentId。

在上面的json中,我们可以看到第一个对象的_id在其他对象的parentId中表示。子类别的_id可以用作任何其他对象的parentId。因此子类别可能有子类别使用它的id作为parentId。

类别可能有更深层次的子类别,有些没有。我正在努力使其动态化。

我试图获得的最终结果是所有没有任何子类别的类别 ID (hasSubCategory=false)

最佳答案

您必须使用递归函数...

例如:

// Begin of your code
category = /* MongoDB Query for getting the category obj through id */

var myCategory = await findSubCat(category);

返回我的类别;

// somewhere else you set this function
async findSubCat(category) {

    if(category.hasSubCategory == 'false')  {
            return category;
    }

    subCategory = /* MongoDB Query for getting the category obj through id */
    var children = [];

    for(i=0;i<subCategory.length;i++)
    {
            var mySubCat = subCategory[i];
            var myChildren = await findSubCat(mySubCat);
            children.push(myChildren);
    }

    category.children = children;

    return category;
 }

关于javascript - 获取子类别的最后一个子 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845991/

相关文章:

java - 连接到外部 mongo 数据库 (java)

Java MongoDB : What is the difference between com. mongodb.DB 和 com.mongodb.client

javascript - 每个方法中的 if-else (jQuery)

javascript - 当剩余时间等于 X 时触发事件

javascript - 我如何在 AngularJS 的索引页面上使用来自 Node.js 的信息

javascript - 如何解码使用 Connect 的 cookieSession 设置的 cookie secret ?

javascript - 控制台记录 sinon.spy() 显示 [Function] 而不是 spy 的内容

java - 在 MongoDB Map Reduce 函数中查询

javascript - 选择自动完成 Angular Directive(指令)

javascript - 更改背景颜色 - jQuery/Javascript