使用包含排序键上条件的键条件表达式(AWS DynamoDB with Serverless Framework)



我只想从具有partitionKey=userID和sortKey=todoID的DynamoDB表("todosTable"(中检索一个项。

为了向您展示一些东西,下面有一个示例,它可以正确地获取userId=userId用户的所有待办事项

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[]
}

但那不是我想要的。我只想要一件。根据文档,我将使用一个作用于主键(分区和/或排序键(的密钥条件表达式

所以我试着这样做,但这是不正确的

async getTodoItem1(userId: string, todoId: string): Promise<TodoItem>{
const result = await this.docClient.get({
TableName: this.todosTable,
KeyConditionExpression: 'userId = :userId',
AND todId = :todoId,
ExpressionAttributeValues: {
':userId': userId,
':todoId': todoId
}
}).promise()
return result.Item
}

有人能帮我获得只检索一个项目的正确查询吗?其中分区键=userID,排序键=todoID?

在这种情况下,使用GlobalSecondaryIndex的模式正确吗?

感谢

您还需要将副密钥添加到KeyConditionExpression,应该如下所示:

KeyConditionExpression: 'userId = :userId AND todoId = :todoId'

排序键更灵活,并允许其他操作,如BEGINS_WITHBETWEEN

最新更新