首页 > 解决方案 > 基于链接id递归扫描表

问题描述

我在 DynamoDB 中有一张表,如下所示。id 是主键,linked_id 是二级索引

id|value|linked_id
1 | one | #NULL
8 | two | #NULL
2 | two | 1
6 | two | 8
3 | two | 2

是否可以在 DynamoDB 中进行查询/扫描以递归方式获取所有父项?例如,当我传递 id 3 时,它返回第 3 行,然后第 2 行因为linked_id 不是#NULL 并且我们有 id 2 的行,它等于第 3 行的linked_id。

如果linked_id 是#NULL - 停止查询。我已经将 SQL 查询与子查询一起使用,但它需要永远

UPD 1. 结果必须如下

id|value|linked_id
1 | one | #NULL
2 | two | 1
3 | two | 2

谢谢

标签: amazon-web-servicesamazon-dynamodb

解决方案


假设表名是 ABC,我们有一个 dbModel 来查询/扫描表。

function main(id){
    return ABC.getItems(id)
        .pipe(getChild.bind(null)
        .execute();
}

  function getChild(queryResult, next){
    if(!queryResult.items.length) return;
    return Promise.map(queryResult.items, item =>{
      return ABC.getItems(item.linked_id).execute().then((res)=>allValues.push(res.items));
    })
      .then(()=> next());
}

推荐阅读