当我的密钥被称为密钥时如何进行更新

how to do the update when my key is called key

我在 dynamoDB 中进行更新时遇到问题,在 dyanamo 中执行更新时它告诉我不能使用 key 关键字

"message": "Value provided in ExpressionAttributeNames unused in expressions: keys: {#keyid}", "code": "ValidationException", "time": "2022-05-06T00:24:03.502Z",

使用 ExpressionAttributeNames 时,我必须将密钥与不同的名称“Key”相关联,但在 table 中,它的 ID 称为密钥,并且在更新我的代码时会生成先前的错误。

function updateUser(key, sortkey, dateFiling) {

    try {

        let params = {
            TableName: env.getEnv(CTE.User),
            Key: { "#keyid": key , "sortkey": sortkey },
            UpdateExpression: "set dateFiling = :dateFiling",
            ExpressionAttributeNames: { '#keyid': 'key' },
            ExpressionAttributeValues: { ":dateFiling": dateFiling }
        };

        await db.updateItem(params);

        console.log(params); 
    }

    catch (error) { 

        console.log('Error  in updateUser %j:', error);
   }
}

我的疑问恰恰与 ExpressionAttributeNames 有关,因为它不使用 keyid 信封来引用密钥,并且对保留字的使用没有问题。有人可以帮帮我吗。请

Key 参数接受 reserved keywords:

Key: { "key": key , "sortkey": sortkey },

保留关键字是 expressions 中的 no-nos,如 UpdateExpression。 DynamoDB 抱怨您没有在表达式中使用 ExpressionAttributeNames,这是事实。删除它。