5

Stworzyłem więc tabelę dynamoDB AWS (bazy danych) i jestem gotowy, aby uzyskać te dane z AngularJS. Jak to zrobić z AngularJS? Czy muszę skonfigurować inną usługę za pomocą Amazon? Czy mogę uzyskać bezpośredni dostęp do mojej bazy danych?Amazon DynamoDB and AngularJS

Nie mogłem znaleźć niczego bezpośrednio związanego z DynamoDB i AngularJS. Każda pomoc będzie bardzo ceniona!

+0

Jest JS SDK (http://aws.amazon.com/sdk-for-browser/). Sprawdź przykład: http://www.ng-newsletter.com/posts/aws-js-sdk.html – tavi

+0

Czy planujesz rozmawiać bezpośrednio z DynamoDB z aplikacji internetowej? Jeśli pójdziesz tą drogą, ujawnisz swoje poświadczenia AWS użytkownikom. – mkobit

+0

Dzięki Tavi. Myślę, że AWS JS SDK jest dokładnie tym, czego szukam. – WebDevJ

Odpowiedz

5

Tak, można uzyskać dostęp do Amazon DynamoDB bezpośrednio z aplikacji AngularJS przy użyciu zestawu SDK JavaScript Java dla przeglądarki. Ten sam fragment kodu powinien również działać dla NodeJS.

Należy pamiętać, że aplikacja musi bezpiecznie uwierzytelniać się w AWS bez osadzania poświadczeń bezpieczeństwa w kodzie. Amazon Cognito ułatwia i automatycznie dba o uwierzytelnianie, jeśli utworzyłeś pulę tożsamości i odpowiednio skonfigurujesz aplikację. Oto kilka linków, które pomogą Ci zacząć. Zbudowaliśmy aplikację demo z AngularJS na Amazon DynamoDB. Korzysta z Amazon Cognito do uwierzytelniania, a Document SDK do przechowywania i pobierania obiektów JSON do iz DynamoDB bezpośrednio, bez potrzeby serializowania i deserializacji ich w kodzie klienta w przeglądarce. Kod

Źródło: https://github.com/awslabs/aws-dynamodb-mars-json-demo

żywo demo: http://dynamodb-msl-image-explorer.s3-website-us-east-1.amazonaws.com/

przykłady z wykorzystaniem biblioteki AWS: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/services/mars-photos.js

przykłady korzystania z serwisu, który używa biblioteki 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

Dokument SDK: https://github.com/awslabs/dynamodb-document-js-sdk

+0

Twój przykład jest świetny, ale głos na Facebooku nie działa, jeśli nie loguję się już na Facebooku. Czy to projekt czy błąd? Zwykle, jeśli nie jesteś zalogowany, witryna otwiera okno logowania, w którym możesz wprowadzić dane uwierzytelniające, ale nie w twoim przypadku - po prostu wyrzuć wyjątek. – mimic

8

Chociaż demo Mars JSON jest doskonała, tu jest naprawdę prosty przykład zacząć który wykorzystuje AWS SDK dla v2.1.33 JavaScript. Wyłącz klawisze na własną rękę. To jest tylko wersja demonstracyjna, nie twórz kluczy tajnych, użyj zamiast tego AWS Cognito. Przejrzyj zrzuty ekranu dla kilku wątków AWS.

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

bardzo ładne podsumowanie, chociaż dodatkowa uwaga powinna brzmieć, że aby być blisko użytecznego, musielibyście przekazać funkcję zwrotną do metod read() i update(), zamiast deklarować ją w getItem i updateItem połączenia. –