Amazon dynamodb 如何在DynamoDB中将项目添加到地图

Amazon dynamodb 如何在DynamoDB中将项目添加到地图,amazon-dynamodb,Amazon Dynamodb,我将AWS.DynamoDB.DocumentClient与nodejs(AWS上的lambda函数)一起使用 我已经创建了一个名为Translations、主键Term、排序键Category的数据库 基本上我试着这样写数据: { Term: 'hello_there', Category: 'common_phrases', Translations: { en-ca: 'Hello There!' } } UpdateExpression:

我将
AWS.DynamoDB.DocumentClient
与nodejs(AWS上的lambda函数)一起使用

我已经创建了一个名为
Translations
、主键
Term
、排序键
Category
的数据库

基本上我试着这样写数据:

{ 
  Term: 'hello_there', 
  Category: 'common_phrases', 
  Translations: {
    en-ca: 'Hello There!'
  } 
}
    UpdateExpression:
      'SET #trans.#lang = :term',
    ExpressionAttributeValues: {
      ':term': 'french version',
    },
    ExpressionAttributeNames: {
      '#trans': 'Translations`,
      '#lang': 'fr-ca',
    },
我想更新Translations Map以添加另一种语言,或者只是修改对象的
en-ca
部分

我尝试了以下方法:

let params = {
    TableName: 'Translations',
    Key: {
      Term: 'hello_there',
      Category: 'common_phrases',
    },
    UpdateExpression:
      'SET Translations.#lang = list_append(Translations, :term)',
    ExpressionAttributeValues: {
      ':term': 'french version',
    },
    ExpressionAttributeNames: {
      '#lang': 'fr-ca',
    },
  }
但是我得到了一个关于错误操作数类型的错误

我试过:

    UpdateExpression:
      'SET Translations.#lang = :term',
    ExpressionAttributeValues: {
      ':term': 'french version',
    },
    ExpressionAttributeNames: {
      '#lang': 'fr-ca',
    },
但这会覆盖Translations字段的全部内容。这意味着如果我已经有了
en-ca
,现在我只有
fr-ca

我也尝试了这个,但也得到了一个操作数错误:

{
  UpdateExpression: 'ADD Translations :term',
  ExpressionAttributeValues: {
    ':term': { 'fr-ff': 'frenchterm' },
},

有关如何向翻译映射添加/更新项目的任何建议?

您的
表达式已关闭,请尝试以下操作:

{ 
  Term: 'hello_there', 
  Category: 'common_phrases', 
  Translations: {
    en-ca: 'Hello There!'
  } 
}
    UpdateExpression:
      'SET #trans.#lang = :term',
    ExpressionAttributeValues: {
      ':term': 'french version',
    },
    ExpressionAttributeNames: {
      '#trans': 'Translations`,
      '#lang': 'fr-ca',
    },

非常感谢。为了在下次搜索时澄清这一点,技巧是将对象路径的所有部分放入
ExpressionAttributeNames