티스토리 뷰

이 페이지는 Node.js 프로젝트에 Amazon AWS DynamoDB를 연결하는 방법에 대해 설명하고 있다.

폴더 구조에 관련한 내용은 지난 포스트를 참고한다.

참고) http://kkumalog.tistory.com/49



# 설치

$ npm install aws-sdk



# Code

여기서는 AWS DynamoDB의 'version'테이블에서 version 필드값이 'a'인 데이터를 가져오는 과정에 대한 코드를 나타내고 있다.

(코드는 DB와 직접 연결하는 database폴더 → 서버를 실행하는 app.js 순서로 설명한다. 또한 예시를 위해 aws 설정 관련 코드를 같은 파일에 작성했으나, 실제로는 코드의 재사용성을 위해 다른 파일로 분리하여 사용하고 있다)


1) database/version.js

const AWS = require(‘aws-sdk’);
const doc = new AWS.DynamoDB.DocumentClient();

//TODO region, accessKeyId, secretAccessKey 입력필요


AWS.config.update({
region: region,
accessKeyId : accessKeyId,
secretAccessKey: secretAccessKey
});

const TableNameTree = {
version: ‘version’
};
const getVersion = async function getVersion() {
try {
let data = await doc.query({
TableName: TableNameTree.version,
KeyConditionExpression: '#version = :version',
ExpressionAttributeValues: { ':version': 'a' },
ExpressionAttributeNames: { '#version': 'version' },
}).promise();

if (data && data.Items) data = data.Items;
return data;
} catch (err) {
return Promise.reject(err);
}
};

module.exports = {
getVersion
};



2) api/version.js

const versionDB = require(‘../database/version’);

const printVersion = async function getVersion(req, res, next) {
try {
const v = await versionDB.getVersion();
res.send(v);
}  catch (e) {
res.send(e);
}
}

module.exports = {
printVersion
};



3) router/version.js

const router = require(‘express’).Router();
const version = require(‘../api/version’);

router.get(‘/‘, version.printVersion);

module.exports = router;



4) app.js

const express = require(‘express’);
const version = require(‘./router/version’);
const app =  express();

app.get(‘/‘,  function (req, res) {
res.send(‘Hello World!’);
});

app.use(‘/version’, version);


app.listen(3001,  function () {
console.log(‘Example app listening on port 3001!’);
});



# 서버실행

https://localhost:3001/version 을 실행하면 obejct타입으로 결과를 얻을 수 있다.

댓글
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday