DynamoDB&;NodeJS:从JSON数组搜索表
我有一个DynamoDB表,只有两列“EmailId”和“SubscriptionId”。“EmailId”是主排序键,“SubscriptionId”是主分区键。我必须在其中插入一条记录,但在此之前,我需要确保该记录不存在。我以JSON数组格式从第三方API端点获取记录。因此,我必须在表中搜索,并且必须插入表中不存在的记录 我得到的记录格式如下。这是一个示例响应,我可以在数组中获得大约1000条记录DynamoDB&;NodeJS:从JSON数组搜索表,json,node.js,amazon-dynamodb,Json,Node.js,Amazon Dynamodb,我有一个DynamoDB表,只有两列“EmailId”和“SubscriptionId”。“EmailId”是主排序键,“SubscriptionId”是主分区键。我必须在其中插入一条记录,但在此之前,我需要确保该记录不存在。我以JSON数组格式从第三方API端点获取记录。因此,我必须在表中搜索,并且必须插入表中不存在的记录 我得到的记录格式如下。这是一个示例响应,我可以在数组中获得大约1000条记录 [{ "emailId": "abc1@abc1.com", "subscri
[{
"emailId": "abc1@abc1.com",
"subscriptionId": "A1"
}, {
"emailId": "abc2@abc2.com",
"subscriptionId": "A2"
}, {
"emailId": "abc3@abc3.com",
"subscriptionId": "A3"
}]
我不想从上面的数组中选取每条记录,搜索表,如果找不到,插入它,因为这个表将变得巨大。我们还有别的办法吗?我在NodeJS中使用这个。虽然我不能更改JSON数组,但我可以更改DynamoDB表。有什么建议吗?batch Write项API可用于将多个项放入一个批中。批处理中的最大请求数为25 最好的部分是,如果
PutRequest
中的键已经存在于表中,它将更新该项,而不是抛出一些错误或异常(即键不是唯一的)
这种方法的缺点是,最新更新将覆盖表中现有项的所有属性。例如,如果表中的现有项有5个属性,而最新更新只有3个属性,则在最新批处理执行后,表将只有3个属性(如最新PutRequest中所示)
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
RequestItems: {
"subscription": [
{
PutRequest: {
Item: {
"emailId": "abc1@abc1.com",
"subscriptionId": "A1"
}
}
},
{
PutRequest: {
Item: {
"emailId": "abc2@abc2.com",
"subscriptionId": "A2"
}
}
},
{
PutRequest: {
Item: {
"emailId": "abc3@abc3.com",
"subscriptionId": "A3"
}
}
}
]
}
};
docClient.batchWrite(params, function (err, data) {
if (err) {
console.error("Unable to write item. Error JSON:", JSON.stringify(err,
null, 2));
} else {
console.log("Write Item succeeded:", JSON.stringify(data, null, 2));
}
});