Как первичные ключи определены с DynamoDB.DocumentClient для NodeJS? - PullRequest
0 голосов
/ 09 июня 2018

Я читал много документации, особенно для AWS.DynamoDB.DocumentClient, и я пытаюсь выяснить, как создать Table / DocumentClient с определенным первичным ключом, например id.Насколько я понимаю, первичные ключи необходимы, и что "вторичные индексы" являются вложенными атрибутами, но я не вижу никаких параметров конструктора для фактического указания, что id будет первичным ключом.

Как я могууказать, что id должен быть первичным ключом Table / DocumentClient?


https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html

Примечание Требуется первичный ключ.Этот код добавляет элемент, который имеет первичный ключ (год, заголовок) и информационные атрибуты.Атрибут info хранит образец JSON, который предоставляет дополнительную информацию о фильме.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018
KeySchema: [
    {
      AttributeName: 'ID',
      KeyType: 'HASH'
},

Это должно сработать, верно?

0 голосов
/ 10 июня 2018

Хорошо, я не понимал, схема для создания таблицы была настолько сложной.Методом проб и ошибок с локальной DynamoDB он сказал мне, что для KeySchema должны существовать AttributeDefinitions.Именно эта схема ключей определяет имена «первичных» ключей, а типы находятся в совершенно отдельном поле.

Объект конструктора НЕ заполняет таблицу, он только устанавливает начальный раздел (первичный?) Ключи необязательный ключ сортировки, который сформирует составной ключ.

var AWS = require('aws-sdk');

AWS.config.update({
  region: 'us-west-2',
  endpoint: 'http://localhost:8000'
});

var db = new AWS.DynamoDB();
var awaitTable = db.describeTable({ TableName: 'app-content' }).promise();

awaitTable.catch(e => {
    if (e.statusCode === 400) {

        return db.createTable({
            TableName: 'app-content',
            KeySchema: [
                { 'AttributeName' : 'fooPartitionKeyName', 'KeyType' : 'HASH' },
                { 'AttributeName' : 'barSortKeyName', 'KeyType' : 'RANGE' }
            ],
            AttributeDefinitions: [
                { 'AttributeName' : 'fooPartitionKeyName', 'AttributeType' : 'S' },
                { 'AttributeName' : 'barSortKeyName', 'AttributeType' : 'S' }
            ],
            ProvisionedThroughput: {
                ReadCapacityUnits: 5,
                WriteCapacityUnits: 5,
            },
        }).promise();

    } else { return Promise.reject('Unknown error fetching table.') }

}).then(table => {
    console.log('table!', table);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...