Javascript 如何映射嵌套的对象数组?

Javascript 如何映射嵌套的对象数组?,javascript,node.js,logic,Javascript,Node.js,Logic,我有一个用例,需要查询NoSql表(AWS DynamoDb), 将返回一个列表, 每个结果还需要查询回同一个表。 我的表格有两个重要列- 1.子服务id 2.家长id 查询是在表的父\u id列上进行的 每个记录只有一个父id, 但是一个父id可以出现在多行中,因此一个父id可以有多个子项。 我的表格如下所示- 除第一次呼叫外,父\u id字段中的所有剩余呼叫, 使用每条记录的子服务id进行 如图所示, 第一条记录是第二条记录的父记录, 第二条记录是第三条记录的父记录。 但从理论上讲,第一、

我有一个用例,需要查询NoSql表(AWS DynamoDb),
将返回一个列表,
每个结果还需要查询回同一个表。

我的表格有两个重要列-
1.子服务id
2.家长id

查询是在表的父\u id列上进行的
每个记录只有一个父id,
但是一个父id可以出现在多行中,因此一个父id可以有多个子项。

我的表格如下所示-

除第一次呼叫外,父\u id字段中的所有剩余呼叫,
使用每条记录的子服务id进行

如图所示,
第一条记录是第二条记录的父记录,
第二条记录是第三条记录的父记录。

但从理论上讲,第一、第二和第三条记录都可以有多个子记录。
可以使用主键(子服务id)或索引(父id)查询NoSql表(AWS DynamoDb)

我尝试了以下代码,但无法理解逻辑-

var tree = {};
var requestBody = "";
module.exports.listServiceRelation = async (constants, requestBody) => {

    let requestContext = requestBody.context;
    requestBody = requestBody.request;

    let connection = await dynamoDb.getDynamoConnection(constants);
    console.log('db connection created!');

    let apiResponse = await getSubServiceHierarchy(constants, connection, requestBody.service_id);

};

let getSubServiceHierarchy = async (constants, connection, parent_id) => {

    let subServices = await dynamoDb.getSubServiceByParentId(constants, connection, parent_id);

    if(subServices != undefined && subServices.Items != undefined && subServices.Items.length > 0){

        let subServicesArr = [];
        for(let i in subServices.Items){
            let temp = {};

            let currObj = subServices.Items[i];

            temp.sub_service_id = currObj.sub_service_id;
            temp.sub_service_name = currObj.sub_service_name;
            temp.parent_id = currObj.parent_id;

            subServicesArr.push(temp);
        }
        tree[parent_id] = subServicesArr;

        for(let i in subServices.Items){
            let currObj = subServices.Items[i];

            let grandChildren = await dynamoDb.getSubServiceByParentId(constants, connection, currObj.sub_service_id);

            if(grandChildren != undefined && grandChildren.Items != undefined && grandChildren.Items.length > 0){
                getSubServiceHierarchy(constants, connection, grandChildren);
            }
        }
    }
    else{
        return [];
    }
};
我需要为我的用例提供伪代码逻辑方面的帮助,
我的输出应该是这样的-

[
    {
        "sub_service_id": "1",
        "parent_id": "main_service_id",
        "children": [{
            "sub_service_id": "2",
            "parent_id": "1",
            "children": [{
                "sub_service_id": "3",
                "parent_id": "2",
                "children": []
            }]
        }]
    },
    {
        "sub_service_id": "4",
        "parent_id": "main_service_id",
        "children": []
    }
]

我怀疑你在这个问题上会得到任何帮助。在这里发布之前,您可能应该总结出确切的问题是什么(即您的代码在哪里被破坏)。请参阅希望获得一些与逻辑/方法相关的帮助:/您的帖子太长了。可能有很多无关紧要的细节。我没读过,我怀疑其他人会读。StackOverflow更多的是一个提供清晰直接的问题和答案的地方。如果您正在寻找代码审查,您可以前往: