Ris*_*ain 1 amazon-web-services node.js amazon-dynamodb
我在 Dynamodb 中有一个名为 followProduct 的表,它具有以下结构
id - item id
email - user email
product - product id
Run Code Online (Sandbox Code Playgroud)
每当用户关注产品时,我都会在表格中进行输入。我正在尝试停止重复输入并使用以下代码
let params = {
TableName: "followProduct",
ConditionExpression: "email <> :email AND product <> :pid",
Item: {
email: "a@a.com",
product: req.body.productId,
id: shortid.generate()
},
ExpressionAttributeValues: {
':email': "a@a.com",
":pid": req.body.productId
}
};
createItemInDDB(params).then(() => {
res.status(200).send("Company Added");
}, err => {
console.log(err);
res.sendStatus(500);
});
Run Code Online (Sandbox Code Playgroud)
CreateItemInDDB 只是一个以参数为输入的函数,并运行文档客户端提供的 put 函数。此参数仍在重复输入。我希望对于每封电子邮件,每个产品 ID 只应输入一次。
你能描述一下你的表哈希范围键吗?
Dynamodb 只能强制哈希范围表键的唯一性(不适用于全局二级索引键)
来自http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html
要防止新项目替换现有项目,请使用包含 attribute_not_exists 函数的条件表达式,并将属性名称用作表的分区键。由于每条记录都必须包含该属性,因此 attribute_not_exists 函数仅在不存在匹配项时才会成功。
PutItem 操作将覆盖具有相同键的项目(如果存在)。如果您想避免这种情况,请使用条件表达式。这将允许写入仅在相关项目尚未具有相同密钥时继续:
| 归档时间: |
|
| 查看次数: |
5712 次 |
| 最近记录: |