5

Vì vậy, tôi đã tạo ra một bảng AWS dynamoDB (cơ sở dữ liệu) và tôi đã sẵn sàng để có được dữ liệu đó với AngularJS. Làm thế nào để làm điều này với AngularJS? Tôi có cần thiết lập một dịch vụ khác với Amazon không? Hoặc tôi có thể truy cập trực tiếp vào cơ sở dữ liệu của tôi không?Amazon DynamoDB và AngularJS

Tôi không thể tìm thấy bất kỳ thứ gì liên quan đến DynamoDB và AngularJS trực tiếp. Mọi sự trợ giúp sẽ rất được trân trọng!

+0

Có một JS SDK (http://aws.amazon.com/sdk-for-browser/). Xem ví dụ tại đây: http://www.ng-newsletter.com/posts/aws-js-sdk.html – tavi

+0

Bạn có dự định nói chuyện trực tiếp với DynamoDB từ một ứng dụng web không? Nếu bạn đi theo cách đó, bạn sẽ hiển thị thông tin đăng nhập AWS của mình cho người dùng. – mkobit

+0

Cảm ơn Tavi. Tôi nghĩ rằng AWS JS SDK là chính xác những gì tôi đang tìm kiếm. – WebDevJ

Trả lời

5

Có, bạn có thể truy cập Amazon DynamoDB trực tiếp từ ứng dụng AngularJS của bạn bằng cách sử dụng SDK JavaScript AWS cho Trình duyệt. Đoạn mã giống nhau cũng hoạt động với NodeJS.

Một điều cần lưu ý là ứng dụng của bạn cần xác thực an toàn với AWS mà không nhúng thông tin xác thực bảo mật vào mã. Amazon Cognito giúp bạn dễ dàng và tự động quản lý xác thực nếu bạn đã tạo một nhóm nhận dạng và định cấu hình ứng dụng của bạn cho phù hợp. Dưới đây là một số liên kết sẽ giúp bạn bắt đầu. Chúng tôi đã xây dựng một ứng dụng demo với AngularJS trên Amazon DynamoDB. Nó sử dụng Amazon Cognito để xác thực và SDK tài liệu để lưu trữ và truy xuất các đối tượng JSON đến và trực tiếp từ DynamoDB mà không cần phải tuần tự hóa và deserialize chúng trong mã máy khách trong trình duyệt. đang

Nguồn: https://github.com/awslabs/aws-dynamodb-mars-json-demo

Live Demo: http://dynamodb-msl-image-explorer.s3-website-us-east-1.amazonaws.com/

ví dụ về sử dụng thư viện AWS: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/services/mars-photos.js

ví dụ của việc sử dụng các dịch vụ được sử dụng thư viện 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

tài liệu SDK: https://github.com/awslabs/dynamodb-document-js-sdk

+0

Ví dụ của bạn là tuyệt vời nhưng bỏ phiếu facebook không hoạt động nếu tôi chưa đăng nhập vào facebook. Có phải do thiết kế hay chỉ là một lỗi? Thông thường nếu bạn không đăng nhập vào trang web sẽ mở cửa sổ đăng nhập, nơi bạn có thể nhập thông tin đăng nhập nhưng không phải trong trường hợp của bạn - bạn chỉ cần ném một ngoại lệ. – mimic

8

Trong khi bản demo Mars JSON là tuyệt vời, đây là một ví dụ rất đơn giản để bắt đầu sử dụng AWS SDK cho v2.1.33 JavaScript. Tự mình tắt khóa. Đây chỉ là bản demo, không mã hóa các khóa bí mật, thay vào đó có thể sử dụng AWS Cognito. Xem lại ảnh chụp màn hình cho một số AWS của 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

tóm tắt rất hay, mặc dù một lưu ý bổ sung là nói rằng ở bất cứ nơi nào gần hữu ích, bạn phải chuyển một hàm gọi lại vào phương thức read() và update(), thay vì khai báo nó trong getItem và updateItem cuộc gọi. –