データベース復習(2)


0915

1.MySQLプロパティ

  • 世界で最も多く使用されているオープンソース関係型データベース管理システム
  • マルチスレッド、マルチユーザフォーマットの構造
  • 3306ポート
  • MySQL Workbench:フロントエンドツール.
  • が使いやすい

    2.MySQLによるサーバ通信実験


    1)新しいExpress環境の構築

  • express --view=ejs db_test
  • npm install
  • ノードがnodemon
  • に変更されました.
  • sql 2取付
  • 2)MySQLで新しいアーキテクチャを作成し、テーブルを作成する


    3)express環境でconfigとmodulesファイルを作成しsqlに関連付ける


    4)ルータの作成


    既存のモジュール化ではルータ部分のみが保持され、
    コントロールというフォルダを作成して切断
    MVCモードに類似
    MVCは、モデル、ビュー、およびコントローラの略である.
    プロジェクトを組織するときにコンポーネントを3つのモードに分割するアプリケーション.
    ユーザーが表示するページ、データ処理、およびこれらの関係を制御します.
    この3つのコンポーネントからなるアプリケーションを作成します.
    それぞれの役割に集中するしかない.
    私たちは互いに分離し、それぞれの役割に専念し、開発することができます.
    これで、あなたは
    増加,繰返し符号化などの問題を解決した.
    const express = require("express");
    const router = express.Router();
    const membershipController = require("../../controllers/membership/membershipController");
    const upload = require("../../modules/awsUpload");
    
    router.get("/:gender", membershipController.detailMembership);
    
    router.post("/images", upload.single("img"), membershipController.uploadImage);
    
    router.post("/", membershipController.uploadMembership);
    
    module.exports = router;
    ルータのコードはずっと簡単になりました.

    5)コントローラ上でsqlとサーバ通信を行う

    const { none } = require("../../modules/awsUpload");
    const con = require("../../modules/mysql");
    // const upload = require("../../modules/awsUpload");
    
    const membershipController = {
      detailMembership: (req, res) => {
        const { gender } = req.params;
        const sql = "select * from membership where gender=?";
        const params = [Number(gender)];
    
        if (Number(gender) === 0 || Number(gender) === 1) {
          con.query(sql, params, (err, result) => {
            if (err)
              return res.status(400).json({
                message: "조회 실패",
              });
    
            res.status(200).json({
              message: "조회 성공",
              data: result,
            });
          });
        } else {
          res.status(401).json({
            // 오류번호는 중첩되면 안됨!
            message: "옳지 않은 gender 값 입니다.",
          });
        }
      },
     
    module.exports = membershipController;
    メンバーシップコントローラという名前の関数に複数の接続を作成します.
    クエリー/追加/削除のためのコードを作成します.
    その後,Postmanによる通信実践により,sqlにおけるデータの追加と削除が見られる.

    3.S 3 MySQL、サーバとの通信


    1)アップロードイメージの準備


  • configフォルダにawsConfigを作成します.jsonファイルをインポート!(私のIAM)

  • 既存のawsUploadファイルをmodulesフォルダにインポート

  • npm install multer multer-3 aws-sdk
  • 2)multerを用いて画像をS 3にアップロードし、imgのurlを応答値とする

    const membershipController = {
     uploadImage: (req, res, err) => {
         const img = req.file; // req.body가 아니라 req.file로 받아옴
         console.log(img);
    
         // postman에서 header값 dataform으로
         if (img) {
           res.status(200).json({
             message: "이미지 업로드 완료",
             imgUrl: img.location, // location으로 img의 url 가져오기!
           });
         } else {
           res.status(400).json({
             message: "이미지 업로드 실패",
           });
         }
       },
    
       uploadMembership: (req, res) => {
         const { gender, title, img } = req.body;
         const sql = "insert into membership (gender, title, img) values (?, ?, ?)";
         const params = [gender, title, img];
    
         // postman에서 header값 application/json으로
         con.query(sql, params, (err, result) => {
           if (err)
             return res.status(500).json({
               message: "에러가 발생했습니다.",
             }); // return 으로 err가 걸리면 바로 if문 탈출하므로 else 노필요
           res.status(200).json({
             message: "생성이 완료되었습니다.",
           });
         });
       },
    };
    上のコードで画像ファイルをS 3にアップロードする
    アップロードしたファイルをMySQLに保存(imgのURL形式で)