我想从 DynamoDB 检索项目名称,这是我的表属性之一。
这是我当前的代码:
export async function main(event, context) {
const data = JSON.parse(event.body);
const params = {
TableName: "dev-table",
KeyConditionExpression: "userId = :userId" ,
ConditionExpression: "projectId = :projectId",
ExpressionAttributeValues: {
":userId": event.requestContext.identity.cognitoIdentityId,
":projectId": data.projectId
}
};
try{
const result = await dynamoDbLib.call("query", params);
return success(result.Items);
}catch(e){
return failure(e);
}
}
但是我收到一个错误:
Value provided in ExpressionAttributeValues unused in expressions: keys: {:projectId}
这个错误从何而来?
如何从表中检索单个属性值?
最佳答案
ConditionExpression 是 deleteItem、putItem、transactWriteItems 和 updateItem 方法的有效参数。对于查询方法,请对非关键属性使用 FilterExpression 参数:
export async function main(event, context) {
const data = JSON.parse(event.body);
const params = {
TableName: "dev-table",
KeyConditionExpression: "userId = :userId",
FilterExpression: "projectId = :projectId",
ExpressionAttributeValues: {
":userId": event.requestContext.identity.cognitoIdentityId,
":projectId": data.projectId
}
};
try {
const result = await dynamoDbLib.call("query", params);
return success(result.Items);
} catch(e) {
return failure(e);
}
}
关于node.js - 从 DynamoDB 检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511366/