Получить все записи без одного атрибута в DynamoDB, используя узел - PullRequest
0 голосов
/ 29 мая 2018

Я работаю с DynamoDB, лямбда-функцией AWS, безсерверной платформой со средой выполнения 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 голосов
/ 20 июня 2018

Вы должны будете использовать выражение ProjectionExpression.

Чтобы использовать зарезервированные ключевые слова в ProjectionExpression (или любом другом выражении DDB), вы используете ExpressionAttributeNames (и ExpressionAttributeValues, если необходимо), чтобы отобразить их.

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

Вы должны используйте символ хеша #.

ExressionAttributeValues будет использовать двоеточие : вместо хеша.В обновлении вы бы сделали UpdateExpression: 'SET #ro = :ro'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...