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