在Nodejs的DynamoDB中使用多个条件获取记录

时间:2018-09-03 15:13:26

标签: node.js amazon-dynamodb

我想在dynamodb中创建一个新用户,但在此之前,我想检查该用户是否存在于db中。这里主分区键是用户名。我想检查条件中的emailId和用户名。两者都应该是唯一的。例如

user1 user1@gmail.com
user2 user2@gmail.com
user3 user3@gmail.com 

示例1 当我创建新用户 username = user4 emailId=user1@gmail.com 时,不应创建新用户,因为emailId已经存在。

示例2 当我创建新用户 username = user1 emailId=user4@gmail.com 时,不应创建新用户,因为用户名已经存在。

这些是场景。谁能告诉我对此的最佳解决方案是什么?

我使用 scan 方法

找到了解决方案
const AWS = require('aws-sdk');
const dynamoDb_DocumentClient = new AWS.DynamoDB.DocumentClient();

    let params = {
        TableName: "OP-User",
        ProjectionExpression: 'userName, emailAddress',
        FilterExpression: "userName = :userName OR emailAddress = :emailAddress",
        ExpressionAttributeValues: {
          ":userName": "user1",
          ":emailAddress": "user111@asurion.com"
        }
      };

      dynamoDb_DocumentClient.scan(params, function (err, data) {
        if (err) {
          console.log("err:  " + err);
        }
        console.log("data:  " + data);
      });

我们可以为此提供另一种解决方案吗?使用查询,索引名?像这样。 任何建议将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

在创建项目之前,使用AWS DynamoDB Conditional Expressions比较用户名和ID属性。