Backend


データベース#データベース#


大きな表形式:Oracle、MySQL、Postgresql(現在のデータベース)
ドキュメントタイプ:MongoDB

DBeaver


現在使用されているデータベースはDbeaverを使用しており、Entityをよく表示するデバイスです.
Nosqlもいい支持者だ.
NoSQLは何ですか.いつ作成されたのですか.
NoSQLの略語については、No SQL、Not Only SQL、No Relational Openrational Database SQLと考えている人もいますが、現在はNot Only SQLを使って説明している人は多くありません.
既存のリレーショナル型DBMSが持つ特性だけでなく、他の特性もサポートするという意味です.

シンプルな大フレームワーク


フロント:ユーザーページ、管理者ページ
バックエンド:API,DB
フロントからBackendにAPIを要求し、APIはデータベースに接続し、対応するデータを取得する.
インポートすると、データはフロントに再送信され、リクエストが完了します.

新しいBackend


バックエンドのレジストリを作成します.yarn initで新しいpackage.jsonが生成される.
-yarn add -D typescriptを使用してDevDependationにタイプスクリプトをインストールします.
-package.json
 "scripts": {
    "dev": "ts-node index.ts"
  },
糸dev入力時index.tsをホームページとして実行します.
次にts-nodeyarn add -D ts-nodeと入力し、ts-nodeを予め装着する.
Typescriptのconfigファイルをタイプスクリプトのホームページからrecommandにインポートします.{ "extends": "@tsconfig/recommended/tsconfig.json" }tsconfig.jsonと入力します.
-devリポジトリで作業します.yarn add -D ts-node-devを取り付け、梱包します.jsonのdevを修正します.

そしてyarn devと入力し、メッセージがあるか確認します.

テーブルの作成


postgresqlを操作するにはいくつかのツールが必要です.yarn add pgでPostgreSQLクライアント-純javascript&libpqをインストールします.
バックエンドからデータベースへの接続を支援するツールには、ORMのリレーショナル型があります.
文書型はODMあります.
ORM:Sequelize、TypeORM、Prisma等
ODM:Mongoose等
TypeORM :
typeORMという名前のため、タイプスクリプト専用のORMのように見えますが、JavaScript(ES 5、ES 6、ES 7)もサポートされています.
TypeORMを用いた開発では,PythonのSQLAlchemyなどのデータmapperモードやRailsなどのアクティブレコードモードを用いて開発することができる.また,モデルを正確に定義する利点は,決定したタイプのツリーを最大限に獲得し,複雑なモデル間の関係を形成できることである.
typeORMを使用する理由:
JavaScriptを使用してデータベースを制御できます.
gql,ApolloServerを簡単に使えば,sqlを自作して処理する必要はない.
Entity()でテーブルを作ると発表した後、
BoardというクラスとしてBaseEntityの機能をインポートして宣言します.
テーブルのプライマリ・キーを必ずしも設定しない場合、エラーが発生したときにプライマリ・キーに設定されるプロパティをPrimaryGeneratedCoumnで定義します.
次に、Columnで属性を定義します.

API

localhost:4001/graphqlに接続すると、私が定義したqueryゲートが表示されます.
const typeDefs = gql`
  type Query{
    fetchBoards: Boolean
  }

  type Mutation {
    createBoard(writer: String!, age: Int!): Boolean
  }
`;
typeDefsでGraphqlのapi名と必要なプロパティを定義し、Resolversでapiがどのように動作するかを定義できます.
const resolvers: IResolvers = {
  Query: {
    fetchBoards: (_, args) => {
      try{
        const BoardReturn = Board.find({where : {deletedAt: null}})
        console.log(BoardReturn);
        return BoardReturn
      } catch (error){
          throw new ApolloError("게시물 요청을 실패했습니다.")
      }
    },
  },
  Mutation: {
    createBoard: (_, args) => {
      try{
        Board.insert({
          ...args
        })
        return {
          message: "게시물이 정상적으로 등록되었습니다."
        }
      } catch (error) {
        //backed와 서버간 통신에서 문제 발생
        throw new Error("게시판에 글 등록하는데 에러가 발생했습니다")
      }
    },
    deleteBoard: (parent, args) => {
      try{
        Board.update({number: args.number},{ deletedAt: new Date() })
          return {
            message: "게시물 삭제 완료"
          }
      } catch {
        throw new ApolloError('게시물 삭제에 실패했습니다.');
      }
    }
  },
};

入力する値の属性がキー値と同じ場合は、スプレッドシート演算子で直接入力できます.
そうでなければ、argsでパラメータを受け取り、導入して使用することができます.