Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 检查dynamodb中现有的主键_Node.js_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Node.js 检查dynamodb中现有的主键

Node.js 检查dynamodb中现有的主键,node.js,amazon-web-services,amazon-dynamodb,Node.js,Amazon Web Services,Amazon Dynamodb,我有一个数组,其中包含字符串列表 示例:[“一”、“二”、“三”、“四”] 此外,我还有下面给出的dynamodb结构示例 id(primary key) | status one | completed three | completed five | completed six | Inprogress 我需要用dynamodb主键检查字符串值是否已经存在于dynamodb中(在

我有一个数组,其中包含字符串列表 示例:
[“一”、“二”、“三”、“四”]

此外,我还有下面给出的dynamodb结构示例

id(primary key)  |   status
one              |  completed
three            |  completed
five             |  completed
six              |  Inprogress
我需要用dynamodb主键检查字符串值是否已经存在于dynamodb中(在nodejs中执行此逻辑)

如果字符串值在dynamodb中已经存在,则不要将其添加到新数组中,如果它在dynamodb中不存在,则需要将该字符串添加到新数组中

在上面的示例中,数据预期结果是:
[“二”,“四”]

请告诉我如何检查dynamodb中的现有数据


提前感谢

我不确定我是否完全理解您的问题,但我认为您正在查找dynamodb
putItem
请求中的
Exists
参数或条件运算符

换言之,在执行put操作时,可以断言记录不存在:

如果Exists为false,则DynamoDB假定属性值为false 表中不存在。如果事实上该值不存在,则 假设有效且操作成功。如果找到该值, 尽管假设它不存在,操作还是失败了 带有条件检查失败异常。“


类似地,应该可以对操作编写更复杂的断言

您可以使用


是@david这里我只需要检查数据是否已经存在于dynamodb中,我不需要使用putItem插入数据。你能不能使用dynamodb getItem()请求来执行此操作?如果我们使用dynamodb.getItem()来执行此操作对于每个请求,我们需要从数据库中获取所有数据,然后比较是否存在。这将产生性能问题。因此,我在dynamodb中查看任何其他选项以检查是否存在数据。我在数组中有一个字符串列表。我需要检查此字符串值是否存在于dynamodb中。并在newarray中添加不存在的值。i不需要在dynamodb中插入不存在的记录。但是带有条件表达式的putItem正确地插入了(不存在的值)。
var params = {};
params.TableName = "MyTable";
params.Item = { id : { S : 'one' }, status : { S : 'completed' } },
params.ConditionExpression = '#i <> :val';
params.ExpressionAttributeNames = {'#i' : 'id'};
params.ExpressionAttributeValues = {':val' : "one"};

DynamoDB.putItem(params, function (error, data) { ... });
Event.create({id : "one", status : 'completed' }, {overwrite : false}, function (error, acc) { ... });