AWS DynamoDB 列出不同 ID

ykn*_*121 5 node.js amazon-dynamodb aws-sdk

我正在使用 Nodejs 开发一些东西,并且我在 DynamoDB 上有一个表。因此,我使用 aws-sdk for nodejs 来处理这两件事。

这是一个例子。ID 和名称是表的组合键。

ID    name   otherData
----------------------
1     Matt   123
1     Mary   1234
2     Mary   2312
4     Mary    3123
4     Pet    3123
Run Code Online (Sandbox Code Playgroud)

我想要的是获取不同 ID 的列表。所以,预期输出是

ID = [1, 2, 4]
Run Code Online (Sandbox Code Playgroud)

这个怎么做?

F_S*_*O_K 5

1) 执行 DynamoDB 扫描以获取所有(非唯一)ID 值。ProjectionExpression 限制返回的结果属性,在本例中仅限 ID。请注意,这并不会使您的扫描速度更快。当您执行扫描时,您将获得一个包含结果的 JSON 对象。您可以使用 JMES 获取 ID 数组 (data.Items.ID)。

2)使数组在您的nodejs代码中唯一(例如使用下面的ArrNoDupe代码函数)

var params = {
 ProjectionExpression: "ID",
 TableName: "YOUR_TABLE"
};

ddb.scan(params, function(err, data) {
  if (err) {
    console.log("Error", err);
  } else {
      console.log(ArrNoDupe(data.Items.ID));
    });
  }
});

function ArrNoDupe(a) {
    var temp = {};
    for (var i = 0; i < a.length; i++)
        temp[a[i]] = true;
    var r = [];
    for (var k in temp)
        r.push(k);
    return r;
}
Run Code Online (Sandbox Code Playgroud)