【发布时间】:2021-12-31 23:22:17
【问题描述】:
在我的网站上,我有一个包含以下字段的表单:全名、电子邮件、电话号码和消息(下图)。
有人填写表格后,我想查询我的表以查看是否有任何项目具有相同的电子邮件地址或用户提供给表格的电话号码。如果有一个项目具有相同的电子邮件/电话号码,那么我想检索该项目的“sharedID”,然后使用提交的表单信息以及检索到的 id 在表中创建一个新项目。
目前,我正在执行 dynamoDB 查询来实现这一点(代码如下)。但是,我相信我需要在查询中包含主键(id)。但是,这是一个问题,因为在查询时无法知道项目的 id(因为 id 是随机生成的)。
const checkForSameEmailOrPhone = () => {
const params = {
TableName: "customers",
ProjectionExpression: "sharedID",
FilterExpression: "email_address = :givenEmail or phone_number = :givenNumber",
ExpressionAttributeValues: {
":givenEmail": "xample@example.com",
":givenNumber": '7777777'
}
};
docClient.query(params, function(err, data){
if (err) {
console.error('Error in GetItem', err);
} else {
console.log('data', data);
function createItem() {
const uniqueId = nanoid();
let params = {
TableName :"customers",
ConditionExpression: "attribute_not_exists(z)",
Item:{
"id": uniqueId,
"email_address": "address@email.com",
"full_name": "a name",
"phone_number": "822222222",
"message": "different",
"sharedId": data?.Items[0]?.id || uniqueId
}
};
docClient.put(params, function(err, data) {
if (err) {
console.error('sdk ERROR', err);
} else {
console.log('success');
}
});
};
createItem();
}
});
};
话虽如此,我想知道是否有人可以帮助我找到一种经济高效的解决方案来检索包含用户在表单上提供的相同电子邮件和电话号码的项目的 ID。
【问题讨论】:
标签: javascript amazon-web-services amazon-dynamodb dynamodb-queries