node.js - 如何使用数组在FilterExpression中使用 “IN”语句 - dynamodb

标签 node.js amazon-dynamodb aws-sdk

检查了 AWS 文档,但没有找到任何工作示例。

这是我的尝试

var params = {
            TableName: "User",
            IndexName:"a-b-index",
            KeyConditionExpression: "Country = :country and #s = :status",
            FilterExpression: "Id IN (:e)",
            ExpressionAttributeValues: {
              ":country ": "USA",
              ":status": 1,
              ":e": "1"

            },
            ExpressionAttributeNames: {"#s": "Status"}
          };

          //get users
          dynamodb.query(params, function (err, data) {
            if (err)
              //error
            else {
              //success

            }
          });

得到记录,但它正在获取 ID 为 1 的记录,但我想使用这样的数组

 var params = {
        TableName: "User",
        IndexName:"a-b-index",
        KeyConditionExpression: "Country = :country and #s = :status",
        FilterExpression: "Id IN (:e)",
        ExpressionAttributeValues: {
          ":country ": "USA",
          ":status": 1,
          ":e": ["1","2","3"]

        },
        ExpressionAttributeNames: {"#s": "Status"}
      };

      //get users
      dynamodb.query(params, function (err, data) {
        if (err)
          //error
        else {
          //success

        }
       });

如何使上述代码正常工作。想要获取记录。语法正确,查询运行没有错误,但我没有得到记录

最佳答案

请引用 answer

总结:-

对于“IN”子句中固定数量的值:-

var params = {
    TableName : "Users",
    FilterExpression : "username IN (:user1, :user2)",
    ExpressionAttributeValues : {
        ":user1" : "john",
        ":user2" : "mike"
    }
};

对于数组中的更多元素并动态形成FilterExpression:-

var titleValues = ["The Big New Movie 2012", "The Big New Movie"];
var titleObject = {};
var index = 0;
titleValues.forEach(function(value) {
    index++;
    var titleKey = ":titlevalue"+index;
    titleObject[titleKey.toString()] = value;
});

var params = {
    TableName : "Movies",
    FilterExpression : "title IN ("+Object.keys(titleObject).toString()+ ")",
    ExpressionAttributeValues : titleObject
};

关于node.js - 如何使用数组在FilterExpression中使用 “IN”语句 - dynamodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283653/

相关文章:

java - 亚马逊云数据库 : Could not unconvert attribute error

java - 如何设置S3文件夹中所有文件的ACL

amazon-web-services - AWS S3 预签名 URL 包含 X-Amz-Security-Token

javascript - Node.js:允许在循环期间更新进程

node.js - 未处理的 promise 拒绝警告 : Mongoose Server Selection Error

javascript - 有没有办法在 VueJS 中缓存 API 响应

.net - 如何在 C# 中接收 AWS SNS 通知?

javascript - Azure 移动服务 Node.js 上的 where 子句的过滤功能

java - 如何在 Lambda 处理程序中反序列化 DynamoDB 映射类型

java - 将不同的 dynamodb 项(来自同一个 dynamodb 表)解码到多个 POJO