生成随机uuid值后,我继续将其分配给项目。uuid:
let uuid = uuidv4();
let title = "Title 100"
let item = {
uuid: uuid,
title: title
};
对于主键为item.uuid
属性的Dynamodb表,我将项目添加到表中:
let TABLE_NAME = "My Table Name";
let options = {};
let promise = dbClient.put_item({ Item: item, TableName: TABLE_NAME, ...options });
新项目被插入到Dynamodb表中,其中包含之前生成的主键uuid
。
接下来,我想向同一个表中添加另一项,标题为“title 101”:
let uuid = uuidv4();
let title = "title 101"
let item = {
uuid: uuid,
title: title
};
(这两个项目将具有相同的标题,但不同的uuid用作表中的主键)。
由于我想确保,只有当没有其他项目具有相同的“title 101”标题时,才会添加此项目,因此我使用条件表达式:
let options = {
ConditionExpression: "#title <> :title",
ExpressionAttributeNames: {
"#title": "title"
},
ExpressionAttributeValues: {
":title" : "title 101"
}
}
let promise = dbClient.put_item({ Item: item, TableName: TABLE_NAME, ...options });
promise
.then(res => {
console.log('--------- SUCCESS --------');
console.log(res);
console.log('-----------------');
});
但是不管这里使用的条件表达式
如何,DynamoDB都会继续添加一个具有相同title
值的新项目。
有没有办法对不是主键的属性(字段)使用条件表达式?
条件表达式
仅适用于更新/删除(不适用于创建),即如果给定主键(分区键HashKey)的项目已经存在,则检查条件表达式的结果并在返回true时继续。我们仍然需要传递整个主键。
我们可以尝试使用扫描过滤器,但我们最终会读取整个表,以找到与非键属性匹配的行,这是非常有效的,如果表很大,则会花费大量资金。
所以,在这种情况下,最好是在标题上添加一个全局二级索引,并运行两个单独的查询,首先按标题查询GSI,以确定是否存在具有匹配标题的记录,如果不存在,则放置项。
我正在我们的项目中实施DynamoDB。我们必须将大型数据字符串放入数据库中,所以我们将数据拆分为小块,并插入多行,其中只有一个属性值发生了更改—这是字符串的一部分。一列(范围键)包含多个零件。插入和选择数据对于大小字符串都非常有效。问题是删除项目。我了解到,当您想要删除某个项时,需要为该项指定主键(哈希键或哈希键和范围键-取决于表)。但如果我想删除对其中一个属性具有特定值的项目,该怎么办?我是否
我想在某些情况下更新一个项目,然后我想知道更新项目返回时项目是否更新。 留档对我来说似乎自相矛盾。 在本页上:http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html在“条件更新”示例中,它表示“更新后显示的所有项目属性都将在响应中返回。” 在本页上:https://godoc.org/git
问题内容: 因此,例如: 但这当然是行不通的:)有什么办法可以做到这一点? 问题答案: 更新资料 根据一些评论,请务必注意,如果可能存在恶意内容(例如,变量来自用户输入),则可能需要转义该 变量 ES6更新 在2019年,这通常使用模板字符串编写,并且上面的代码已更新。最初的答案是:
我是javascript和Node.js的新手,想知道是否有人能帮我弄清楚通过他们的Node.js SDK将新项放到AWS Dynamodb上现有表中的语法。这是我目前掌握的情况。我想做的事情有没有一个例子?如果有人能给我指明正确的方向,我将不胜感激。
New in Django 1.8. 条件表达式允许你在过滤器、注解、聚合和更新操作中使用 if ... elif ... else的逻辑。条件表达式为表中的每一行计算一系列的条件,并且返回匹配到的结果表达式。条件表达式也可以像其它 表达式一样混合和嵌套。 条件表达式类 我们会在后面的例子中使用下面的模型: from django.db import models class Client(m
问题内容: 我有一个DynamoDB属性,其值是从数字到字符串的映射。我试图放入一个新的键值对。从我阅读的内容来看,这似乎是可能的,但我不知道如何。 但我不认为该示例是在地图上添加新项目。有人可以告诉我如何在地图上放置物品吗? 谢谢。 编辑: 我不想获取该项目,在本地进行更改,然后放回原处。我正在与可能同时进行交互的多个客户端一起工作(并且我认为dynamo进行的更新可确保不会出现竞争状况)。 问