ruby - 如何分隔 DynamoDB 更新表达式中的多个子句

标签 ruby amazon-web-services amazon-dynamodb

根据 AWS Docs :

An update expression consists of one or more clauses. Each clause begins with a SET, REMOVE, ADD or DELETE keyword. You can include any of these clauses in an update expression, in any order. However, each action keyword can appear only once.

我无法在一个 update_expression 中获得正确的 SETREMOVE 语法:

params = {
           key: {
             'id' => { s: '123'  }
           },
           table_name: 'customers'
           expression_attribute_names: {
             '#ADR' => 'address'
             '#ON' => 'order_num'
           },
           expression_attribute_values: {
             ':a' => { s: '123 Main St' }
           },
           update_expression: 'REMOVE #ON, SET #ADR = :a',
         }
  dynamodb = Aws::DynamoDB::Client.new(region: 'us-east-1',       
                                       simple_attributes: false)
  dynamodb.update_item(params)

我还尝试了以下方法:

update_expression: 'SET #ADR = :a, REMOVE #ON' => Invalid UpdateExpression: Syntax error; token: "REMOVE", near: ", REMOVE #ON" (Aws::DynamoDB::Errors::ValidationException)

update_expression: ['SET #ADR = :a', 'REMOVE #ON'] => expected params[:update_expression] to be a String, got value ['SET #ADR = :a', 'REMOVE #ON'] (class: Array) instead. (ArgumentError)

谁能告诉我正确的文档?

最佳答案

我把它弄得太复杂了。
这是答案:

update_expression: 'SET #ADR = :a REMOVE #ON'

除了 Clause 关键字外不需要分隔符。

关于ruby - 如何分隔 DynamoDB 更新表达式中的多个子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45553443/

相关文章:

ruby - IRB 中的符号是什么意思?

amazon-web-services - Docker容器启动后立即退出

amazon-web-services - 如何在 aws-sdk-go Dynamodb QueryInput 中使用 "BETWEEN"?

java - DynamoDBMappingException : no mapping for HASH key - even though I clearly mapped it

python - 我可以将 "Config"对象与 boto3 资源一起使用吗?

ruby - 如何在Ruby计算器上添加循环

ruby-on-rails - Rails 4.2.0 - Errno::EACCES(权限被拒绝@dir_s_mkdir -/files)

ruby - Capistrano 部署错误 : Stage not set

amazon-web-services - AWS Lambda : no items in Destination list

java - AWS Java SDK - 使用区域方法时 Jackson 中的 NoSuchMethodError