我在 DynamoDB 中有一个存储一些数据的表,分区键 - 用户名 - 存储为 CognitoUser 名称以及用户提供的排序键(排序键是“代码”) - 这些构成主键。
我想查询 DynamoDB 中与主键匹配的单个项目。
这是我的 Lambda 函数;
exports.handler = (event, context, callback) => {
const type = event.type;
if (type === 'all'){
const params = {
TableName: 'test-record'
};
dynamodb.scan(params,function(err,data){
if(err){
console.log(err);
callback(err);
}else{
console.log(data);
const items = data.Items.map(
(dataField) =>{
return{
Date: dataField.Date.S,
Code: dataField.Code.S,
TelNumber: +dataField.TelNumber.N,
NameOfPerson: dataField.NameOfPerson.S,
FileNum: dataField.FileNum.S,
Purpose: dataField.Purpose.S,
};
}
);
callback(null,items);
}
});
}else if(type == 'single'){
const params = {
Key: {
"username": {
S: dataField.username.S,
},
"Code": {
S: dataField.Code.S
}
},
TableName: "test-record"
};
dynamodb.getItem(params, function(err,data){
if(err){
console.log(err);
callback(err);
}else{
console.log(data);
callback(null, data);
}
});
}else{
callback('Something went wrong');
} };
如果我在这个函数中硬编码“用户名”和“代码”,它会工作并返回正确的数据,但使用上面粘贴的代码会给我一个错误提示;
{ "errorMessage": "RequestId: c410e493-b774-11e7-a528-37d94b51b57b Process exited before completing request" }
任何想法如何从 DynamoDB 获取项目而不必将它们硬放入 Lambda 中?