如何解决没有排序键的DynamoDB查询
我有一个DynamoDB表,其中包含主键:userID,排序键:sessionID和另一列,名为examID。
我想返回一个列表,该列表返回具有我发送的userID和examID的所有记录。 这是我的代码:
export const main = handler(async (event,context) => {
const data = JSON.parse(event.body);
const params = {
TableName: process.env.tableNameExamResults,KeyConditionExpression: "userId = :userId and examId = :examId",ExpressionAttributeValues: {
":userId": event.requestContext.identity.cognitoIdentityId,":examId": data.examId
}
};
const result = await dynamoDb.query(params);
return result.Items;
});
这是我得到的错误: { “ statusCode”:500, “ body”:“ {” error“:”查询条件缺少关键架构元素:sessionId“}”,
...
我认为也许我应该包括一个过滤器表达式,或者不确定是否必须使用索引重新创建数据库。
感谢您的帮助。谢谢
解决方法
我刚刚添加了一个新的GSI,然后我也编辑了我的代码:
const params = {
TableName: process.env.tableNameExamResults,IndexName: 'userId-examId-index',KeyConditionExpression: "userId = :userId and examId = :examId",ExpressionAttributeValues: {
":userId": event.requestContext.identity.cognitoIdentityId,":examId": data.examId
}
};
这似乎现在可行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。