我有一个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“}”,
...
我认为也许我应该包括一个过滤器表达式,或者不确定是否必须使用索引重新创建数据库。
感谢您的帮助。谢谢
答案 0 :(得分:1)
我刚刚添加了一个新的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
}
};
这似乎现在可行。