我正在使用dynamoDB,AWS lambda函数,无服务器框架和node.js运行时 我想从没有特定属性的特定表中获取所有记录。
在我的情况下,用户表记录如下,其中id是主键
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9156,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9155,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9154,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9153,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9152,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
{
id: 468caff0-630d-11e8-ada4-d5e26a6f9151,
fullname: "a",
email: "a@gmail.com",
password: "abcd",
address: "address 123"
createdAt: "1527576930412"
}
现在,当我获取用户表的所有记录时,我不想获取password
属性。
现在我在ProjectionExpression
的帮助下做到了这一点
我当前的查询就像
const params = {
TableName: 'team',
ProjectionExpression: "fullName, email, address, createdAt"
};
dynamoDb.scan(params, (error, result) => {
// here i got result without the password
})
在上面的查询中,我不想写这一行ProjectionExpression: "fullName, email, address, createdAt"
我只想在结果中定义我不想要的属性。
那么有什么方法可以将这种东西转化为dynamoDB查询吗?
提前感谢您的帮助
答案 0 :(得分:0)
您将必须使用ProjectionExpression。
要在ProjectionExpression(或任何其他DDB表达式)中使用保留的关键字,请使用ExpressionAttributeNames(如果需要,还可以使用ExpressionAttributeValues)来映射它们。
const ddbParams = {
TableName: 'tableName',
ExpressionAttributeNames: {
'#ro': 'role',
'#st': 'state'
},
ProjectionExpression: '#ro, #st',
}
您必须使用井号#
。
ExressionAttributeValues
将使用冒号:
而不是哈希。在更新中,您将进行UpdateExpression: 'SET #ro = :ro'
。