使用节点

时间:2018-05-29 07:22:23

标签: node.js aws-lambda amazon-dynamodb serverless-framework

我正在使用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查询吗?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您将必须使用ProjectionExpression。

要在ProjectionExpression(或任何其他DDB表达式)中使用保留的关键字,请使用ExpressionAttributeNames(如果需要,还可以使用ExpressionAttributeValues)来映射它们。

const ddbParams = {
    TableName: 'tableName',
    ExpressionAttributeNames: {
        '#ro': 'role',
        '#st': 'state'
    },
    ProjectionExpression: '#ro, #st',
}

必须使用井号#

ExressionAttributeValues将使用冒号:而不是哈希。在更新中,您将进行UpdateExpression: 'SET #ro = :ro'