只有当新项目的GSI分区键已经存在于另一个项目上时,我才希望PutItem成功。
假设我的表有以下项目(省略一些属性):
PK GSI1PK GSI1SK
1 a b
2 c d
我试图把这个项目:
{
PK: 3,
GSI1PK: "e",
GSI1SK: "f"
}
我希望这个PutItem请求失败,因为表还不包含GSI1PK=="e"的项。
如果可能的话,我想用一个条件表达式来解决这个问题。我不想通过在PutItem请求之前查询表来解决这个问题。
以下是我如何尝试通过一个我希望成功的示例(go sdk)实现这一点:
input := &dynamodb.PutItemInput{
Item: map[string]*dynamodb.AttributeValue{
"PK": intAttrVal(3),
"GSI1PK": stringAttrVal("a"),
"GSI1SK": stringAttrVal("f"),
},
ConditionExpression: stringRef("attribute_exists(GSI1PK)"),
TableName: &tableName,
}
但是和异常被抛出:“条件检查失败异常:条件请求失败”。
我真的没有办法做到这一点,因为您要检查的值位于另一项上。因此,将这两个操作作为ConditionCheck和PutItem放在DynamoDB事务中。如果条件检查(检查其他项中的值是否存在)成功,并且PutItem成功,那么您就成功了。如果条件检查失败,PutItem也会失败。
切换到一台新电脑后,我不得不再次安装SmartGIT for Windows,现在尝试克隆我的fedorahosted。组织存储库。密钥存储在C:/User/myusername/中。ssh,SmartGIT提供了一个干净的安装,克隆我的存储库的URL是正确的-不幸的是,SmartGIT没有要求密钥,它只是尝试连接到fedorahosted。但是当然失败了。 所以这里可能出了什么问题?我必须把ss
我试图在我的一个项目中使用Google Maps API,并在指导中设置API凭据,它希望我将应用程序的SHA-1签名证书指纹添加到API中。 在说明中,它说使用下面的命令来获取指纹: 当我尝试使用它时,无论是在Android Studio终端还是在我的应用程序目录中的cmd提示符,我都得到以下错误: 注意,我的应用程序在D:\Projects\Android\AppName中。 我如何获得我的S
我正在尝试将以下结构存储在卡桑德拉中。 上面的大多数查询是 这就是为什么将()设置为主键很有用的原因。 根据docu,Cassandra的默认分区键是主键的第一列-在我的例子中是,但我想在Cassandr集群上均匀分布数据,我不能允许一个中的所有数据只存储在一个分区中,因为有些商店有10M条记录,有些只有1k条记录。 我可以设置()作为分区键,然后我可以达到Cassandra集群中记录的统一分布。
巴拉特
我用passport进行身份验证。js。然而,在创建会话之后,在每次AJAX请求之后,RoboForm都会请求保存密码。不知道是什么原因。 接受:/ 接受-编码:gzip,放气,sdch,br 接受-语言:en-US,en;q=0.8 连接:保持活力 Cookie:connect.sid=s:jvQRBQY... 主机:localhost:3000 如果-无-匹配:W/"140-360389655
pip识别全局安装的软件包-( 我用VirtualVWrapper预激活钩子清理蟒蛇, 然后echo$PYTHONPATH返回空字符串,但这没有帮助。 发生了什么?