当前位置: 首页 > 知识库问答 >
问题:

如何使用KeyConditions和AWS-JS-SDK在DynamoDB中查询表

苗烈
2023-03-14

我试图从手动创建的虚拟表中进行查询。

表名称:myTable

主分区键:id(字符串)

主排序键:ts(Number)

该表包含以下项目:

id | ts |湿度|温度

outTopic|1233|50|30

主题之外| 1234|

主题外| 1235 | 52 | 32

我可以通过AWS管理控制台查询表,但不使用AWS Javascript SDK。

问题:我只想查询时间戳值小于等于1234的项目。

但当我使用Node运行代码时。js公司:

let docClient = new AWS.DynamoDB.DocumentClient();
 
var params_query = {
        TableName: "myTable",
        KeyConditionExpression: '#id = :iottopic and #ts <= :time_val',
        ExpressionAttributeNames: {
            "#id": "id",
            "#ts": "ts"
        },
        ExpressionAttributeValues: {
            ":iottopic": {"S": "outTopic"},
            ":time_val": {"N": "1234"}
        }
};
 
docClient.query(params_query, function (err, data) {
        if (err) {
            console.log("error - " + JSON.stringify(err, null, 2));
        }
        else {
            console.log("success - " + JSON.stringify(data, null, 2));
        }
})

我得到以下错误:

KeyConditionExpression无效:运算符或函数的操作数类型不正确;操作员或html" target="_blank">功能:

当我使用AWS CLI运行等效命令时,我得到了预期的两个项目:

aws dynamodb query \
    --table-name myTable \
    --key-condition-expression "id = :iottopic AND ts <= :time_val" \
    --expression-attribute-values \ 
    '{":iottopic": {"S": "outTopic" },":time_val": {"N": "1234"}}'

共有1个答案

谢洛城
2023-03-14

表达式属性值的参数应该是这样的:

js prettyprint-override">ExpressionAttributeValues: {
    ":iottopic": "outTopic",
    ":time_val": 1234
}

省略属性类型。

 类似资料:
  • 我有一个用例可以将begins_with应用于AWS Dynamodb表的主排序键, 我可以从AWS控制台使用begins_with键条件查询表, 我希望使用AWS Javascript SDK实现同样的功能。 我的表中有以下字段- 1。user_id(主分区键) 2。user_relation(主排序键) 我尝试了下面的代码- 错误- 引用- https://docs.aws.amazon.co

  • 我有一个AWS DynamoDb表, 我有user_id作为索引或GSI(user_id-index), 还有product_type作为索引或GSI(prod_type-index). 我试图使用KeyConditionExpression来查询DynamoDb表, 但是我得到了一个- 引用- Dynamodb查询错误-不支持查询键条件 https://docs.aws.amazon.com/a

  • 我试图使用节点JS AWS-SDK从DynamoDB表中获取项。函数运行良好,但更难使用。 我使用官方文档:http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/dynamodb/client.html#batchgetitem-property 在该语法示例中,必须提供表名。

  • 我有一个AWS DynamoDb购物车表,其项目结构如下- - 该表将作为主键, 作为索引或GSI, 作为索引或GSI。 我希望能够查询购物车表, 查找的项目。 我不知道这是否意味着查询- 我知道AWS DynamoDb表不能同时使用多个索引进行查询, 我遇到了以下问题,它有一个类似的用例,答案是建议创建一个复合键, 使用多个本地辅助索引DynamoDb进行查询 这是否意味着在将新项放入表中时,

  • 我需要创建dynamoDB表,然后根据开发、阶段和生产对它们进行分组。我在AWS控制台中找到了一个创建表组的选项,我们可以将表添加到组中。但是我需要使用AWS SDK将表添加到一个特定的组中,我检查了AWS DynamoDB SDK类列表我没有找到任何选项。

  • 我有一个react应用程序,我正在使用AWS amplify。我的问题是,当我从DynamoDB查询数据时,通过AWS AppSync的正确方式是正确的,然后我是否有一个lambda函数来查询数据库,还是AppSync只是这样做?这样做的正确途径是什么?它会反应吗-