Dynamo 中的 JS 更新地图元素 table
JS Update Map element in Dynamo table
TL/DR: 如何在不修改 Dynamo 中的整个地图的情况下更新单个地图 key/value?
我在一个简单的 table 中有一个 Map。我正在尝试实施更新,但不确定如何引用 Map 对象的 key/value 对。这是我尝试过的方法,以及我的 table:
的屏幕截图
传递参数 updq(更新的问题)、updans(更新的答案)、ans(原始答案)、qq(原始问题)
var params = {
TableName: TABLE_NAME,
Key: { topic: topic },
ExpressionAttributeNames: {
"#qq": qq,
"#updq": updq,
},
ExpressionAttributeValues: {
":ans": ans,
":updans": updans,
},
};
if (!doUpdate) {
//replace/create
params["UpdateExpression"] = "SET questions.#qq = :ans"; //this works
} else {
params["UpdateExpression"] = "SET questions.#updq = :updq, _____"; //<<<<<<<<<<THIS DOESNT
}
console.log(`writing params: `, params);
let res = await docClient.update(params).promise();
创建新问题:
问题地图已经存在,因此,SET questions.#qq = :ans
将在 MAP
中创建一个条目
params.ExpressionAttributeNames = {
"#qq": qq,
};
params.ExpressionAttributeValues = {
":ans": ans,
};
params.UpdateExpression = "SET questions.#qq = :ans";
为了更新现有问题,可能是问题本身而不仅仅是答案,因此,我们需要删除现有问题并创建一个新问题,因此,我们需要添加 REMOVE questions.#qq
params.ExpressionAttributeNames = {
"#qq": qq,
"#updq": updq,
};
params.ExpressionAttributeValues = {
":updans": updans,
};
params.UpdateExpression =
"REMOVE questions.#qq SET questions.#updq = :updans";
}
TL/DR: 如何在不修改 Dynamo 中的整个地图的情况下更新单个地图 key/value?
我在一个简单的 table 中有一个 Map。我正在尝试实施更新,但不确定如何引用 Map 对象的 key/value 对。这是我尝试过的方法,以及我的 table:
的屏幕截图传递参数 updq(更新的问题)、updans(更新的答案)、ans(原始答案)、qq(原始问题)
var params = {
TableName: TABLE_NAME,
Key: { topic: topic },
ExpressionAttributeNames: {
"#qq": qq,
"#updq": updq,
},
ExpressionAttributeValues: {
":ans": ans,
":updans": updans,
},
};
if (!doUpdate) {
//replace/create
params["UpdateExpression"] = "SET questions.#qq = :ans"; //this works
} else {
params["UpdateExpression"] = "SET questions.#updq = :updq, _____"; //<<<<<<<<<<THIS DOESNT
}
console.log(`writing params: `, params);
let res = await docClient.update(params).promise();
创建新问题:
问题地图已经存在,因此,SET questions.#qq = :ans
将在 MAP
params.ExpressionAttributeNames = {
"#qq": qq,
};
params.ExpressionAttributeValues = {
":ans": ans,
};
params.UpdateExpression = "SET questions.#qq = :ans";
为了更新现有问题,可能是问题本身而不仅仅是答案,因此,我们需要删除现有问题并创建一个新问题,因此,我们需要添加 REMOVE questions.#qq
params.ExpressionAttributeNames = {
"#qq": qq,
"#updq": updq,
};
params.ExpressionAttributeValues = {
":updans": updans,
};
params.UpdateExpression =
"REMOVE questions.#qq SET questions.#updq = :updans";
}