Node.js DynamoDB Get查询在键中传递两个变量

Node.js DynamoDB Get查询在键中传递两个变量,node.js,amazon-web-services,aws-lambda,amazon-dynamodb,Node.js,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我是AWS的新手,目前正在从事Lambda函数和DynamoDB 我想做的是我们有一个名为Courses的表,主键是“\u id”。我们希望获取已删除的\u标志=false的所有记录 let table = "Courses"; let flag = false; let params = { TableName: table, Key: { deleted_flag : flag } l

我是AWS的新手,目前正在从事Lambda函数和DynamoDB

我想做的是我们有一个名为Courses的表,主键是“\u id”。我们希望获取
已删除的\u标志=false的所有记录

let table = "Courses";
let flag = false; 
let params = {
            TableName: table,
            Key: {
                deleted_flag : flag
            } 
let course_list = await docClient.get(params).promise();

我得到了这个错误

错误:{ValidationException:提供的键元素与架构不匹配

我知道“deleted_flag”不是主键,但我不知道如何获取此字段的数据


另外,如果我想传递两个值,比如
Key={deleted\u flag:false,name=“abc”}
,那么我该怎么做呢?

您正在执行一个dynamodb get,它必须传递一个分区和一个可选的排序键。要执行查询,您需要使用一个筛选表达式进行扫描


但是,随着表的增长,这将变得非常缓慢,因为它不是dynamodb优化的查询。

那么,做这件事的理想方法是什么?我刚刚开始,所以现在可以更改。正如我所说,我有一个表,我有几个条件。所有通过这些条件的记录都应该返回。如果您可以编写mall示例与我的代码类似。在我编写第一个函数时,您提供的URL对我来说很难理解。感谢为了查询属性,属性应该是表的分区键或排序键或为该表定义的索引。很难说是一种理想的方式,因为它取决于一系列因素。一个解决方案解决方案可以是存储另一条分区键值为“deletedrecords”的记录,并可以存储所有标记为已删除的分区键的数组。如果您的目标是删除记录,请查看dynamodb TTL(生存时间)下面是扫描的NoDEJS示例:如果您的数据的主要查询不是基于一个非常独特的密钥,那么考虑AWS RDS而不是DyaMo。看看我的答案:Realth/As5858158967嘿,Amit,我已经使用DoCclipse了。您可以在我的代码的最后一行看到它。但是谢谢:我知道,但是我发布了一个代码代码哟。不,先生,我问的是如何在Key={}中传递两个值并获取输出。而且它们不是主键。我不确定你的答案对我有什么帮助。你需要使用KeyConditionExpression并使用query()而不是get()。