Aws lambda 使用包含sortkey上的条件的键条件表达式(AWS DynamoDB with Serverless Framework)
我只想从一个DynamoDB表(“todosTable”)中检索一项,partitionKey=userID,sortKey=todoID 为了向您展示一些东西,下面有一个示例可以正确地获取userId=userId的用户的所有todo项Aws lambda 使用包含sortkey上的条件的键条件表达式(AWS DynamoDB with Serverless Framework),aws-lambda,amazon-dynamodb,serverless-framework,dynamodb-queries,Aws Lambda,Amazon Dynamodb,Serverless Framework,Dynamodb Queries,我只想从一个DynamoDB表(“todosTable”)中检索一项,partitionKey=userID,sortKey=todoID 为了向您展示一些东西,下面有一个示例可以正确地获取userId=userId的用户的所有todo项 async getAllTodos(userId: string): Promise<TodoItem[]>{ const result = await this.docClient.query({ TableName: t
async getAllTodos(userId: string): Promise<TodoItem[]>{
const result = await this.docClient.query({
TableName: this.todosTable,
KeyConditionExpression: 'userId = :userId',
ExpressionAttributeValues: {
':userId': userId
}
}).promise()
return result.Items as TodoItem[]
}
异步getAllTodos(userId:string):承诺{
const result=等待this.docClient.query({
TableName:this.todosTable,
KeyConditionExpression:'userId=:userId',
表达式属性值:{
“:userId”:userId
}
}).承诺
返回结果。项作为TodoItem[]
}
但这不是我想要的。我只想要一件。
根据文档,我将使用作用于主键(分区和/或排序键)的键条件表达式
所以我试着这样做,但这是不正确的
异步getTodoItem1(userId:string,todoId:string):承诺{
const result=等待this.docClient.get({
TableName:this.todosTable,
KeyConditionExpression:'userId=:userId',
和todId=:todoId,
表达式属性值:{
“:userId”:userId,
“:todoId”:todoId
}
}).承诺
返回结果。项
}
有人能帮我得到只检索一项的正确查询吗,其中partition key=userID,sort key=todoID
在这种情况下,使用GlobalSecondaryIndex的模式是否正确
谢谢您还需要将副键添加到
KeyConditionExpression
中,应该如下所示:
KeyConditionExpression: 'userId = :userId AND todoId = :todoId'
排序键更灵活,并允许其他操作,如
以
开头、在
之间等您还需要将辅助键添加到KeyConditionExpression
中,如下所示:
KeyConditionExpression: 'userId = :userId AND todoId = :todoId'
排序键更灵活,并允许其他操作,如
以
开头,介于
etc之间,请注意,如果您的KeyConditionExpression
结果正好是这样的-指定特定的分区键和排序键-那么您也可以使用更简单的GetItem
请求,而不是查询
,这是对单个特定项的请求。请注意,如果您的KeyConditionExpression
最终恰好是这样-指定特定的分区键和排序键-那么您也可以使用更简单的GetItem
请求,而不是Query
,后者是对单个特定项的请求。