我有一個按玩家帳戶索引的表,每個玩家帳戶都有一個名為“游戲”的空地圖。每當創建新游戲時,我想在該地圖中為新游戲插入一個新專案,并帶有一些起始值。但是,下面的這段 Javascript 代碼給了我一個錯誤:
let newGame = {
"live": { "BOOL": true },
"result": { "S": "in_progress" }
};
let params = {
TableName: "games_roster",
Key: { "account_id" : playerAccount },
UpdateExpression: "SET games.#game_id = :new_game",
ExpressionAttributeNames: {
"#game_id": {"S": gameId}
},
ExpressionAttributeValues: {
":new_game": {"M": newGame}
}
};
await dynamoClient.send(new UpdateItemCommand(params));
錯誤:
TypeError: Cannot read properties of undefined (reading '0')
at Object.AttributeValue.visit (models_0.js?31ed:996:1)
at serializeAws_json1_0AttributeValue (Aws_json1_0.js?1450:4056:1)
at eval (Aws_json1_0.js?1450:4484:1)
at Array.reduce (<anonymous>)
at serializeAws_json1_0Key (Aws_json1_0.js?1450:4478:1)
at serializeAws_json1_0UpdateItemInput (Aws_json1_0.js?1450:5112:1)
at eval (Aws_json1_0.js?1450:520:1)
at step (tslib.es6.js?9ab4:102:1)
at Object.eval [as next] (tslib.es6.js?9ab4:83:1)
at eval (tslib.es6.js?9ab4:76:1)
我已經通過注銷 params 物件驗證了沒有未定義的變數,那么我會在哪里得到 TypeError?
由于@fedanov 的回答,這是正確的格式:
let newGame = {
live: { BOOL: true },
result: { S: "in_progress" }
};
let params = {
TableName: "games_roster",
Key: { "account_id" : { S: playerAccount } },
UpdateExpression: "SET games.#game_id = :new_game",
ExpressionAttributeNames: {
"#game_id": gameId
},
ExpressionAttributeValues: {
":new_game": { M: newGame }
}
};
await dynamoClient.send(new UpdateItemCommand(params));
uj5u.com熱心網友回復:
您將錯誤的型別傳遞給UpdateItemCommandInput。該Key引數需要 DynamoDB JSON 值、ExpressionAttributeNames字串值:
Key: { account_id: { S: playerAccount} },
ExpressionAttributeNames: { "#game_id" : gameId }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/466635.html
下一篇:在React中訪問多個陣列的總和
