私は、NodejsとDynamoDBをバックエンドとして使用してAPIを作成しています。私はアイテムを "友人"のセットに追加するように更新しようとしています。ユーザーを更新すると、「無効なUpdateExpression:オペレータまたは関数のオペランドタイプが正しくありません;演算子:ADD、オペランドタイプ:MAP」というエラーが表示されます。私の理解は、存在しないセットに追加するとセットが作成されるということです。すでに存在する場合は、新しい値をセットに追加する必要があります。なぜ私が追加しようとしているセットがマップとして読み込まれているのか分かりません。AWS DynamoDBがセットに追加しようとしています - 不正確なオペランド
どのようにユーザーが作成されます。
var params = {
TableName: "users",
Item:{
"id": Number(id),
"name": name,
"password": password
}
};
documentClient.put(params, function(err, data) {
if(err)
res.json(500, err);
else
res.json(200, data);
});
友人が追加されている方法:ここで
var params = {
TableName: "users",
Key: {
"id": id
},
UpdateExpression: "ADD friends :friendId",
ExpressionAttributeValues: {
":friendId": { "NS": [friendId] }
},
ReturnValues: "UPDATED_NEW"
};
documentClient.update(params, function(err, data) {
if(err)
res.json(500, err);
else
res.json(200, data);
});
これはエラーなく実行されますが、動作は私が望むものではありません。 SETを2度実行すると、古い入力が置き換えられます。古いデータを保持しながら、新しい入力をセットに追加したい。私は、私の希望する行動を明確にするために質問を修正します。 –
ADD操作に問題があるようです。 API自体に問題があるように見えます。 – notionquest