5

Итак, я создал таблицу AWAM dynamoDB (база данных), и я готов получить эти данные с помощью AngularJS. Как это сделать с помощью AngularJS? Нужно ли мне настраивать другую услугу с помощью Amazon? Или я могу напрямую обращаться к моей базе данных?Amazon DynamoDB и AngularJS

Мне не удалось найти что-либо имеющее отношение к DynamoDB и AngularJS напрямую. Любая помощь будет принята с благодарностью!

+0

Существует JS SDK (http://aws.amazon.com/sdk-for-browser/). Посмотрите пример здесь: http://www.ng-newsletter.com/posts/aws-js-sdk.html – tavi

+0

Планируете ли вы напрямую поговорить с DynamoDB из веб-приложения? Если вы пойдете так, вы откроете свои учетные данные AWS для пользователей. – mkobit

+0

Спасибо Тави. Я думаю, что AWS JS SDK - именно то, что я ищу. – WebDevJ

ответ

5

Да, вы можете получить доступ к Amazon DynamoDB прямо из приложения AngularJS, используя AWS JavaScript SDK для браузера. Этот же фрагмент кода должен работать и для NodeJS.

Следует отметить, что вашему приложению необходимо безопасно пройти аутентификацию в AWS без внедрения учетных данных безопасности в код. Amazon Cognito упрощает и автоматически выполняет проверку подлинности, если вы создали пул идентификаторов и соответствующим образом настроили приложение. Вот несколько ссылок, которые помогут вам начать работу. Мы создали демо-приложение с AngularJS на Amazon DynamoDB. Он использует Amazon Cognito для аутентификации и Document SDK для хранения и извлечения объектов JSON непосредственно из DynamoDB и без него, без необходимости сериализации и десериализации их в клиентском коде в браузере.

Исходный код: https://github.com/awslabs/aws-dynamodb-mars-json-demo

Живая демонстрация: http://dynamodb-msl-image-explorer.s3-website-us-east-1.amazonaws.com/

примеры использования библиотеки AWS: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/services/mars-photos.js

примеры использования сервиса, который использует библиотеку AWS: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/controllers/favorites.js

https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/controllers/top-voted.js

Документ SDK: https://github.com/awslabs/dynamodb-document-js-sdk

+0

Вы, к примеру, здорово, но голосование в facebook не работает, если я уже не вошел в facebook. Это по дизайну или просто ошибка? Обычно, если вы не заходите на сайт, открывается окно входа в систему, в котором вы можете ввести учетные данные, но не в вашем случае - вы просто бросаете исключение. – mimic

8

Хотя демо Марс JSON отлично, вот очень простой пример, чтобы начать работу, которая использует AWS SDK для JavaScript v2.1.33. Выключите ключи самостоятельно. Это только демо, не секретные ключи жесткого кода, вместо этого можно использовать AWS Cognito. Проверьте скриншоты для нескольких AWS gotcha.

https://github.com/mayosmith/HelloDynamoDB

/* 
----------------------------------------------------------------- 
AWS configure 
Note: this is a simple experiement for demonstration 
purposes only. Replace the keys below with your own. 
Do not include the secret key in an actual production 
environment, because, then, it wont be secret anymore... 
----------------------------------------------------------------- 
*/ 
AWS.config.update({accessKeyId: 'AKIAJUPWRIYYQGDB6AFA', secretAccessKey: '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'}); 
// Configure the region 
AWS.config.region = 'us-west-2'; //us-west-2 is Oregon 
//create the ddb object 
var ddb = new AWS.DynamoDB(); 
/* 
----------------------------------------------------------------- 
Update the Table 
----------------------------------------------------------------- 
*/ 
//update the table with this data 
var params = { 
    Key: { 
    name: {S: 'John Mayo-Smith'}, 
    city: {S: 'New York'} 
    }, 
    AttributeUpdates: { 
    food: { 
     Action: 'PUT', 
     Value: {S: 'chocolate'} 
    } 
    }, 
    TableName: 'sampletable', 
    ReturnValues: 'ALL_NEW' 
}; 
//update the table 
update(); 
/* 
----------------------------------------------------------------- 
Get Item from the Table 
----------------------------------------------------------------- 
*/ 
//attribute to read 
var readparams = { 

    Key: { 
    name: {S: 'John Mayo-Smith'}, 
    city: {S: 'New York'} 
    }, 
    AttributesToGet: ['food'], 
    TableName: 'sampletable' 
}; 
//get the item 
read(); 
/* 
----------------------------------------------------------------- 
function update() 
Description: Calls updateItem which is part of the AWS Javascript 
SDK. 
Returns: JSON object (the object is stringifyed so we can see 
what's going on in the javascript console) 
----------------------------------------------------------------- 
*/ 
function update(){ 
    ddb.updateItem(params, function(err, data) { 
     if (err) { return console.log(err); } 
     console.log("We updated the table with this: " + JSON.stringify(data)); 
    }); 
} 
/* 
----------------------------------------------------------------- 
function read() 
Description: Calls getItem which is part of the AWS Javascript 
SDK. 
Returns: JSON object (the object is stringifyed so we can see 
what's going on in the javascript console) 
----------------------------------------------------------------- 
*/ 
function read(){ 
    ddb.getItem(readparams, function(err, data) { 
     if (err) { return console.log(err); } 
     console.log(": " + data);  

    console.log("John's favorite food is: "+ JSON.stringify(data.Item.food.S)); // print the item data 
}); 
} 
+0

очень приятное резюме, хотя еще одно примечание - сказать, что быть где угодно рядом полезно, вам нужно передать функцию обратного вызова методам read() и update(), а не объявлять их в getItem и updateItem звонки. –

Смежные вопросы