我目前正在尝试基于Lambda中的主键返回条目的所有属性,但是我不想键入要获取的每个属性。有没有一种优化的方法来执行此操作,而不是逐一输入?
这是我的lambda函数:
exports.handler = async function(event, ctx, callback) {
var data;
var params = {
Key: {
key: event.key
},
TableName : 'app',
AttributesToGet: [
'email',
'lastName',
'firstName',
'...nextAttribute',
'...nextAttribute'
],
};
try {
data = await dynamoDb.get(params).promise()
console.log(data);
}
catch (err) {
console.log(err);
}
return data.Item;
}
因此,在此示例中,有没有一种方法可以返回所有属性,而不是返回...nextAttribute
?
答案 0 :(得分:4)
您不必指定AttributsToGet
。如果您省略它,则默认情况下将获得所有属性,例如
exports.handler = async function(event, ctx, callback) {
const params = {
Key: {
key: event.key
},
TableName : 'app',
};
try {
const data = await dynamoDb.get(params).promise();
console.log(data);
return data.Item;
}
catch (err) {
console.log(err);
return undefined;
}
}
请参阅AWS JavaScript API中的详细信息,特别是DynamoDB的getItem()函数。
或者,您可能会发现DynamoDB DocumentClient很有趣。从get()文档中复制:
var params = {
TableName : 'Table',
Key: {
HashKey: 'hashkey'
}
};
var documentClient = new AWS.DynamoDB.DocumentClient();
documentClient.get(params, function(err, data) {
if (err) console.log(err);
else console.log(data);
});
附带说明,AttributesToGet
是根据文档提供的旧参数。如果您改变主意并希望明确说明要获取的属性,请考虑改用ProjectionExpression
。