我有一个具有以下结构的 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/