3. controller

postController.ts

'use strict';

import post_interface from '../interface/post';
import bookConfig from '../config/aws/book'
import AWS from "aws-sdk";
import { Response, Request } from "express"

export const addBook = async(req : Request, res : Response) => {
    try{
        const newbook : post_interface = req.body
        AWS.config.update(bookConfig.aws_iam_info);
        const docClient = new AWS.DynamoDB.DocumentClient();
        const params = {
            TableName : bookConfig.aws_table_name,
            Item : {
                title : newbook.title,
                author : newbook.author,
                content : newbook.content
            }
        }
        const result = await docClient.put(params).promise()
        res.status(200).send(result)
    }catch(err){
        console.log(err)
        res.status(500).send(err)
    }
}

export const getbook = async(req:Request, res: Response) => {
    try{
        const book_title : String = req.body.title
        AWS.config.update(bookConfig.aws_iam_info);
        const docClient = new AWS.DynamoDB.DocumentClient();
    
        
        const params = {
            TableName : bookConfig.aws_table_name,
            KeyConditionExpression: "title = :title",
            ExpressionAttributeValues: {
                ":title": book_title
            }
        };
        const result = await docClient.query(params).promise()
        res.status(200).send(result)
    }catch(err){
        console.log(err)
        res.status(500).send(err)
    }
}

export const showAll = async(req: Request, res: Response) => {
    try{
        AWS.config.update(bookConfig.aws_iam_info);
        const docClient = new AWS.DynamoDB.DocumentClient();
        const params = {
            TableName : bookConfig.aws_table_name,
            //ProjectionExpression: "title, author, content"
        };
        const result = await docClient.scan(params).promise()
        res.status(200).send(result)
    }catch(err){
        console.log(err)
        res.status(500).send(err)
    }
}

여기서 이제 js와 가장 큰 차이를 볼 수 있다.
타입을 설정해줘야 한다. js의 가장 큰 장점이자 단점으로 뽑을 수 있는 타입 설정을 ts에서는 반드시 해줘야 한다.
타입을 설정할 때는 : String 처럼 타입을 정해준다.

타입스크립트의 타입설정은 나중에 다시 시간 내서 정리하겠다.

좋은 웹페이지 즐겨찾기