Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。_原文(投稿日:2019/04/28)へのリンクJavaScriptは、Web用に設計されたECMAScript仕様に基づくスクリプト言語です。JavaScriptは、クライアントサイドのみのスクリプト言語からクライアントサイドとサーバサイドの両方で動作するものへと進化しました。サーバサイドJavaScriptの最も注目すべき実装はNode.jsです。問題JavaScriptには、現代の大規模Webアプリケーションで使用される機能がいくつか欠けています。型アノテーション、コンパイル時の型チェック、型推論などの機能です。JavaScriptコードは大規模アプリケーションでは複雑になります。関連スポンサーコンテンツTypeScriptは、大規模アプリケーションにおけるJavaScriptの制限を緩和するために、JavaScriptの型付けされたスーパーセットとして導入されました。TypeScriptは、JavaScriptの厳密な構文上のスーパーセットで、コンパイル時の型チェック、型アノテーション、型推論、型消去などの機能と、インターフェイスのサポートなどのオブジェクト指向の機能を追加したものです。TypeScriptはオープンソースのスクリプト言語であり、JavaScriptに変換されます。出力された出力は、マシンだけが読み取ることができるものではなく、クリーンで慣用的なJSです。TypeScriptは、アノテーションとメタプログラミング構文を使ってクラスとクラスメンバに追加機能を追加するためのサポートを提供するDecoratorsと呼ばれる実験的な機能を追加しました。デコレータは@expression形式の宣言で、expressionは実行時に呼び出される関数として評価され、デコレートされた宣言に関する情報も含まれます。デコレータは、クラス宣言、メソッド、アクセッサ、プロパティ、アノテーションに注釈を付けるために使用されます。この記事ではデコレータが使用されます。2012年に導入されたTypeScriptは最近人気が急上昇しています。最近のJavaScriptとWeb開発のInfoQのトレンドレポートには、「TypeScriptが劇的に増加し、GitHubで最も人気のあるプログラミング言語のトップ10に入っている」ことが記されています。2018年6月、TypeScriptは93位でプログラミング言語のTIOBEインデックスのトップ100でデビューし、翌月はトップ50にランクインしました。最近では、TypeScriptはTIOBEインデックスの44位にランクインしています。TypeScriptはWebアプリケーションを作成するための強力な環境として浮上してきました。言語との整合性を保ちながら、標準のJavaScriptよりも大幅に改善されています。この記事では、Node.js、MySQL、TypeORMでTypeScriptを使用してサーバサイドTypeScriptでデータベースアクセスを管理するための強力なソリューションを作成するために必要な詳細について詳しく説明します。完全なエンドツーエンドのソリューションを提供するために、CRUDアプリケーションの例を作成します。サンプルアプリケーションはジャーナルカタログをモデル化するものとします。JavaScriptをよく知っていることを前提としています。この記事には以下のセクションがあります。次のソフトウェアをダウンロードしてインストールします。Database次に、Node.jsモジュール(パッケージ)をいくつかインストールする必要があります。パッケージを使用します。これはMySQLデータベースを含むほとんどのリレーショナルデータベースにアクセスするためのTypeScriptのオブジェクトリレーショナルマッピングを提供します。typeormパッケージをインストールしてください。are.クラスデコレータを使用する場合に必要なreflect-metadataライブラリをインストールします。reflect-metadataライブラリはデコレータと同じように実験的なものです。-gノードタイピングをインストールします。-gMySQLデータベースドライバをインストールします。-gプロジェクトの作成MySQLデータベース用のTypeORMプロジェクトを作成します。プロジェクト名は任意です。(MySQLProject)。mysqlプロジェクトディレクトリMySQLProjectが作成されます。ディレクトリ(cd)をMySQLProjectディレクトリに変更し、プロジェクトファイルを一覧表示します。freeC:\Typescript\MySQLProject>プロジェクトの依存関係をインストールします。install上記のコマンドの出力が一覧表示されます。vulnerabilitiesMySQLProjectの設定ファイルとsrcファイルは、GitHubで入手できます。この記事で追加したスクリプトも含まれています。コンパイラオプションは、tsconfig.jsonで設定されています。tsconfig.jsonを変更して、次の設定を有効にします。true,ターゲットコンパイルバージョンなど、その他のコンパイラオプションはtsconfig.jsonに事前定義されています。--experimentalDecoratorsオプションを使用すると、JavaScript向けのECMAScript(ES)仕様標準に記載されているようにデコレータを実験的にサポートできます。--emitDecoratorMetadata設定は、ソース内のデコレートされた宣言向けのデザインタイプメタデータを生成します。デコレータメタデータを生成するには、reflect-metadataライブラリをTypeScriptプログラムにインポートする必要があります。MySQLデータベースに接続するためにormconfig.jsonを変更して、データベースオプションの設定を変更してください。ローカルのMySQLデータベースが使用されている場合、hostとportがデフォルトになりますが、usernameとpasswordは違います。]}エンティティの作成このセクションでは、ジャーナルカタログをモデル化するためのエンティティを作成します。エンティティは、データベースのテーブルにマップするクラスです。クラスをエンティティにするのは、typeormライブラリのデコレータ@Entity()です。entityディレクトリにCatalog.tsファイルを追加してエンティティを定義します。"typeorm";Catalogというコードをエクスポートし、そのクラスを@Entity()でアノテーションまたはデコレートします。{...}完全なCatalog.tsスクリプトはGitHubから入手できます。基本エンティティは列で構成されており、すべてのエンティティは少なくとも1つのプライマリ列を宣言する必要があります。TypeORMは、表1で説明したように、いくつかの種類のプライマリ列を提供します。説明@PrimaryColumn()プライマリ列を作成する。列の種類はオプションで指定でき、設定されていない場合はプロパティタイプから推測される。プライマリ列の値はユーザ指定でなければならない。@PrimaryGeneratedColumn()自動インクリメント値で自動的に生成されるint型のプライマリカラムを作成する。@PrimaryGeneratedColumn("uuid")uuid値で自動的に生成されるプライマリカラムを作成する。uuidは一意の文字列値である。プライマリ列種別Catalogエンティティにidという名前のプライマリ列を追加します。MySQLデータベースでは、新しいデータ行ごとにデータベースによって一意の主キー値が自動的に割り当てられるプライマリ列の自動インクリメントがサポートされています。自動インクリメント機能を利用するには、自動生成された列@PrimaryGeneratedColumnを使用してください。number;サンプルアプリケーションでジャーナルカタログをモデル化しています。他の列を追加してください。すべてstring型です。いうタイプのBooleanを追加します。エンティティプロパティタイプは適切なデータベース列タイプにマッピングされます。これは使用するデータベースによって異なります。(255)または類似のデータベースタイプにマッピングされます。numberプロパティタイプは、integerまたは同様のデータベースタイプにマッピングされます。entity-データベースタイプのマッピングもユーザが指定できます。例として、string型の列titleをMySQLデータベースタイプのtextにマッピングします。string;string型のデフォルトの長さは255ですが、例にあるようにカスタムの長さを指定できます。string;次のリストをエンティティファイルにコピーして貼り付けます。前述のとおり、CRUD(作成、読み取り、更新、削除)アプリケーションを開発しています。アプリケーションを開発できるようにするには、MySQLデータベースに接続する必要があります。このセクションでは、MySQLデータベースに接続し、entityディレクトリに定義されたエンティティのテーブルを作成するためのTypeScriptスクリプトを開発します。entity/Catalog.tsファイルに定義したエンティティは1つだけです。プロジェクトのデフォルトのUser.tsを含む他のentityスクリプトをエンティティディレクトリから削除します。TypeScriptプロジェクトのMySQLProjectのsrcディレクトリにindex.jsを作成します。デコレータを使用できるようにするには、reflect-metadataライブラリをインポートします。typeormライブラリからcreateConnection関数をインポートします。entityディレクトリからCatalogクラスをインポートします。ES2017で追加されたasync/await構文を使用します。async/await構文では、非同期関数の前にasyncキーワードが付きます。awaitキーワードは、非同期関数のreturnが約束されるまでスクリプトの実行を中断します。関数を使用して接続を作成します。databaseの名前、entitiesなどの接続オプションが指定されます。console.log(error));thenブロックで、Catalogエンティティのインスタンスを作成します。Catalog();カタログエントリを作成するために、エンティティプロパティの値を設定します。true;EntityManagerのインスタンスを取得し、saveメソッドを使用してエンティティインスタンスを保存します。connection.manager.save(catalog);saveメソッドは、指定されたすべてのエンティティをデータベースに保存します。saveメソッドは、まずエンティティがすでにデータベースに存在するかどうかを確認します。存在すればsaveメソッドによりエンティティが更新され、そうでない場合、saveメソッドは新しいエンティティを追加します。同様に、別のエンティティを追加してください。src/index.tsを一覧表示します。console.log(error));アプリケーションの実行アプリケーションを作成したら、次のコマンドでアプリケーションを実行します。startindex.jsを実行してデータベースに接続すると、プロジェクト内のエンティティのデータベーステーブルが作成されます。1つのデータベーステーブルCatalogのみが作成されます。テーブルデータが追加されます。コマンドからの出力は次のとおりです。CLI(コマンドラインインターフェース)から生成されたMySQLデータベーステーブルを調べます。CLIシェルを起動してmysqlコマンドプロンプトを表示します。mysqlとして使用するようにデータベースを設定します。changedテーブルをリスト表示すると、カタログテーブルが表示されます。sec)catalogテーブルを説明します。Catalogエンティティフィールドに対応する列が一覧表示されます。自動生成の主キー列を自動インクメントで使用しているため、id列の値はデータベースによって設定されます。sec)SELECTステートメントを使用してSQLクエリを実行し、データを一覧表示します。mysql>リポジトリを使用したデータの追加エンティティに対して操作を実行するには、既に使用したEntityManagerと、このセクションで説明するRepositoryの2つのオプションがあります。使用することをお勧めします。Repositoryには、EntityManagerとほとんど同じ機能があります。EntityManagerを使用してCatalogのインスタンスを2つ追加しました。このセクションでは、Repositoryを使用して3番目のCatalogインスタンスを追加します。エントリを作成するために使用したコードを削除します。前のセクションのように、Catalogのインスタンスを作成します。接続からRepositoryインスタンスを取得します。connection.getRepository(Catalog);save関数を使用してCatalogインスタンスを保存します。catalogRepository.save(catalog);変更されたindex.tsを一覧表示します。console.log(error));以前と同じようにアプリケーションを実行すると、別のCatalogインスタンスが保存されます。以前に2つのカタログエントリを追加したため、カタログ数3が表示されます。3SQLクエリを実行すると、3行のデータが表示されます。Managerを使用したエンティティの検索このセクションでは、EntityManagerクラスを使ってデータを見つけます。EntityManagerには、表2で説明したようにデータを検索するためのいくつかの方法があります。メソッド説明find指定されたオプションでエンティティを検索する。findAndCount提供されたオプションでエンティティを検索してカウントする。ページネーションオプション(fromとtake)は無視される。findByIds指定されたIDのエンティティを検索する。findOneオプションに一致する最初のエンティティを見つける。findOneOrFailオプションに一致する最初のエンティティを検索し、なければ失敗する。EntityManagerメソッドを使ったデータ検索すべてのCatalogエンティティを見つけるようにindex.tsを変更します。すべてのカタログエントリを検索するには、findメソッドを使用します。console.log(error));アプリケーションを実行します。すべてのカタログエントリが表示されます(3番目のエンティティをリポジトリに追加する前にスクリプトが実行されると、2つのエンティティのみが表示されます)。]リポジトリを使用したエンティティの検索このセクションでは、エンティティを見つけるためにRepositoryクラスを使います。最初に、JSONオブジェクトをシリアライズ/デシリアライズするために使用されるclass-transformerパッケージをインストールする必要があります。10.452sindex.tsでRepositoryのインスタンスを以前のように取得します。エンティティを見つけるためにfindメソッドを使います。findメソッドの構文は以下のとおりです。FindManyOptions<Entity>)FindManyOptionsは、表3で説明した1つ以上のプロパティとして指定されます。プロパティ説明cacheクエリ結果のキャッシュを有効または無効にする。joinリレーションをロードするかどうかを指定する。loadEagerRelationsEagerリレーションをロードするかどうかを指定する。デフォルトでは、Eagerリレーションはfindメソッドでロードされる。「Eager」リレーションロードとは、エンティティがロードされたときに関連付けられたモデルのデータをロードすることである。loadRelationIdsリレーションIDをロードするかどうかを指定する。trueに設定すると、すべてのリレーションIDがロードされ、リレーション値にマッピングされる。orderエンティティを並び順を指定する。relationsエンティティのどのリレーションを読み込むかを指定する。selectどの列を選択するかを指定する。skipスキップするエンティティまたはエンティティからオフセットするエンティティの数を指定する。take取得するエンティティの最大数である。where適用する条件を指定する。index.tsを変更します。Repositoryオブジェクトを取得します。selectオプションを使用してすべてのエンティティを検索し、title列とauthor列のみを選択します。});結果をJSONとしてシリアル化するには、serializeメソッドを使用します。serialize(allCatalogs)+'\n');idが1のエンティティを検索するには、findOneメソッドを使用します。serializeメソッドを使用して結果をJSONとして出力します。Service」の最初のエンティティを見つけます。Service"});結果をJSONとして出力します。serialize(specificTitleCatalog)+'\n');editionが「2013年11月12日」であるすべてのエンティティを検索します。serialize(allSpecificEditionCatalogs)+'\n');isPublishedがtrueであるすべてのエンティティを検索します。serialize(allPublishedCatalogs)+'\n');アプリケーションを実行すると結果が表示されます。Haunert","isPublished":true}]エンティティの更新このセクションでは、Catalogエンティティを更新します。EntityManagerクラスとRepositoryクラスの両方に、エンティティを部分的に更新するためのupdateメソッドが用意されています。updateメソッドは高速で効率的ですが、以下の制限があります。カスケード、リレーション、その他の操作を含めずに基本操作を実行する。エンティティがデータベースに存在するかどうかを確認しない。saveメソッドはエンティティが既に存在する場合は更新し、存在しない場合は新しいエンティティを追加します。saveメソッドには、updateにある制限がありません。ADF」に更新します。CatalogエンティティのRepositoryのインスタンスを取得します。idが1のエンティティを探します。ADF」に設定します。ADF";saveメソッドを使用してエンティティを保存します。catalogRepository.save(catalogToUpdate);その後、idが1のエンティティをもう一度検索します。catalogRepository.findOne(1);更新されたエンティティをJSONとして出力します。serialize(updatedCatalog)+'\n');アプリケーションを実行すると、エンティティが更新されます。更新されたエンティティが出力されます。Muench","isPublished":true}エンティティの削除このセクションでは、エンティティを削除します。EntityManagerクラスとRepositoryクラスの両方に、エンティティを削除するための表4で説明されているメソッドが用意されています。メソッド説明delete条件を使用してエンティティを削除する。更新メソッドと同じ欠点がある。エンティティが存在するかどうかを確認しないことと、カスケードと関係が含まない。その前提を許容できれば、削除は速くて効率的である。removeデータベースからエンティティを削除する。エンティティを削除するためのメソッドindex.tsを変更してエンティティの削除を実演します。CatalogエンティティのためのRepositoryのインスタンスを以前と同様に取得します。findOneメソッドを使用して、idが1のエンティティを検索します。メソッドを使用してエンティティを削除します。findを実行して同じエンティティを出力し、削除されたかどうかを確認します。削除されている場合、結果にエンティティが表示されません。serialize(firstCatalog));アプリケーションを実行すると、findOneの結果はundefinedです。これはエンティティが削除されたことを意味します。CLIでSQLクエリを実行すると、idが1のデータ行が表示されていません。sec)mysql>エンティティ間に一対一のリレーションの作成TypeORMはエンティティ間のいくつかの種類の関係をサポートします。表5で説明されているように、これらのそれぞれに対してデコレータと関数がtypeormで提供されています。リレーションのための関数このセクションでは、2つのエンティティ間の1対1の関係について説明します。Catalogのタイムスタンプ用で2番目のエンティティCatalogTimestampを定義します。entityディレクトリにCatalogTimestamp.tsスクリプトを作成します。他の関数に加えて、OneToOneとJoinColumn関数をインポートします。"./Catalog";CatalogTimestampクラスをエクスポートし、@Entity()>デコレータを使用してクラスをエンティティにします。{...}主キー列idを宣言します。number;firstAdded、firstUpdatedとlastUpdated列を追加し、すべてstring型とします。string;@OneToOneデコレータを使用して、Catalogエンティティと1対1の関係を追加します。リレーションは、単方向または双方向です。双方向リレーションを指定します。Catalogと指定することもできますが、1対1のリレーションが存在するエンティティのクラスを返します。catalog.timestampはリレーションの逆側を返します。@JoinColumn()デコレータは、1対1リレーションの所有側を指定します。一方の側だけが所有側になることができます。Catalog;CatalogTimestampエンティティは、GitHubに表示されます。リストをCatalogEntity.tsスクリプトにコピーします。CatalogTimestampとの1対1のリレーションを指定するためにCatalogエンティティを変更する必要があります。typeormから他の関数に加えて、OneToOneとJoinColumn関数をインポートします。CatalogTimestampクラスをインポートします。"./CatalogTimestamp";Catalogエンティティの残りの部分は、@OneToOneデコレータを宣言する必要があることを除けば、以前と同じです。CatalogTimestamp関数は、リレーションが存在するエンティティを指定します。timestamp.catalog関数は逆のリレーションを指定します。cascadeオプションをtrueに設定すると、エンティティが保存されるたびに関連するエンティティが保存されます。これは、Catalogのインスタンスが保存されている場合は関連付けられたCatalogTimestampエンティティも保存されることを意味します。CatalogTimestamp;次に、CatalogエンティティとCatalogTimestampエンティティを使用して1対1の関係を作成するようにindex.tsを変更します。CatalogTimestampクラスを追加でインポートします。"./entity/CatalogTimestamp";以前のようにCatalogエンティティインスタンスを作成します。true;さらに、CatalogTimestampエンティティインスタンスを作成します。"Apr-8-2014-7:06:20-PM-PDT";CatalogTimestampとCatalogエンティティインスタンスを関連付けるか接続します。Catalogのエンティティリポジトリを取得します。connection.getRepository(Catalog);saveメソッドを使用してCatalogエンティティを保存します。saved");修正されたCatalog.tsスクリプトはGitHubプロジェクトに一覧化されています。アプリケーションを実行すると、それらの間のリレーションを含むエンティティが保存されます。cascadeを指定したため、CatalogTimestampエンティティが保存されます。tooリレーションを持つオブジェクトの検索この節では、リレーションがあるオブジェクトを検索します。EntityManagerまたはRepositoryのfind*メソッドを使用して、リレーションを持つオブジェクトを見つけることができます。index.tsを変更します。CatalogのRepositoryインスタンスを取得します。リレーションを含むすべてのエンティティを見つけます。findメソッドのFindManyOptionsオプションのrelationsプロパティは、timestampリレーションを指定します。["timestamp"]});結果をJSONとして出力します。console.log(serialize(catalogs));アプリケーションを実行して、新しく追加されたCatalogエンティティと、関連付けられているCatalogTimestampエンティティを出力します。3つのCatalogエンティティのうち1つだけが関連付けられたnullでないtimestampを持ちます。BY句、LIMIT句、OFFSET句などを含む検索でエンティティのサブセットを特定するオプションや設定が増えるため、複雑なクエリに適しています。結合とマッピング機能、ページネーション、サブクエリも指定できる。例として、リポジトリを取得し、QueryBuilderを作成します。JOINを指定します。複数の結果を取得するにはgetManyを使用してください。結果を1つだけ取得するには、getOneを使用する必要があります。console.log(serialize(catalogs));CatalogTimestampと1対1の関係にあるCatalogエンティティを出力するようにアプリケーションを実行します。CLIからmysqlデータベース内のMySQLテーブルを一覧表示し、catalogとcatalog_timestampテーブルを一覧表示します。|catalog_timestampテーブルを記述すると、他の列に加えて外部キーcatalogIdが表示されます。idの値6が含まれます。sec)catalogでSELECTステートメントを実行すると、idが6の行が表示されます。サンプルデータは異なる場合がありますが、外部キー値はtimestampに関連付けられています。sec)同様に、1対多および多対多の関係を使用できます。次に、1対多の関係の例を説明します。1対多リレーションの作成1対多の使い方を説明するには、もう一度2つのエンティティが必要です。このセクションでは、CatalogEntryと1対多であるCatalogEditionエンティティを使用します。CatalogEditionエンティティは、プライマリ列idに加えて、editionとisPublishedの列を指定します。@OneToManyデコレータは、CatalogEntryと1対多の関係を、その逆の関係を含めて定義します。双方向リレーションが定義されます。CatalogEntry[];CatalogEditionエンティティは、GitHubプロジェクトに一覧化されています。isPublished列を指定します。@ManyToOneデコレータは、逆関係を含むCatalogEditionとの多対1の関係を指定します。CatalogEdition;CatalogEntryエンティティは、GitHubプロジェクトに一覧表示されます。index.tsを次のように変更します。console.log(error));アプリケーションを実行してテーブルとリレーションを作成します。src/index.tsmysqlデータベースのテーブルを一覧表示すると、もしあれば他のテーブルと共に、catalog_editionとcatalog_entryテーブルが表示されます。|catalog_editionテーブルを表示すると、id、edition、isPublishedの3つの列が表示されます。sec)catalog_entryテーブルを表示すると、外部キー列catalogEditionIdなどが表示されます。sec)多対多リレーションの作成このセクションでは、エンティティ間に多対多の関係を作成するデモを示します。そのために2つのエンティティが必要になります。2つの新しいエンティティEditionとSectionを使用します。Sectionエンティティは列idとnameを定義します。Editionとの多対多の双方向リレーションは、@ManyToManyデコレータを使用して次のように定義されます。Edition[];SectionエンティティはGitHubプロジェクトに一覧表示されています。idとnameの列を指定します。@ManyToManyデコレータは、Sectionとの関係を、その逆の関係も含めて定義します。@JoinTable()デコレータは、リレーションの所有側を示し、片側だけが所有できます。エンティティはGitHubプロジェクトに一覧表示されています。index.tsを変更します。Editionエンティティのインスタンスを2つ作成してデータベースに保存します。connection.manager.save(edition2);Sectionエンティティのインスタンスを作成します。Development";editionsリレーションをedition1とedition2に設定します。edition2];Sectionエンティティをデータベースに保存します。connection.manager.save(section);別のSectionエンティティインスタンスを作成し、リレーションeditionsを1つのエディションedition1に設定します。Sectionエンティティインスタンスを保存します。connection.manager.save(section2);3番目のSectionエンティティインスタンスを作成し、edition1に関連付けてデータベースに保存します。次に、findOneメソッドを使用して、editionsリレーションによって関連付けられたEditionエンティティを含む1つのSectionエンティティを検索します。});結果をJSONとして出力します。console.log(serialize(loadedSection));修正されたindex.tsはGitHubプロジェクトに一覧表示されています。アプリケーションを実行して、EditionとSectionの間に多対多の関係を作成します。エンティティおよび関連するEditionもJSONとして出力されます。2018"}]}テーブルを一覧表示すると、editionおよびsectionのテーブルが表示されます。ジャンクションテーブルedition_sections_sectionも表示されます。|まとめTypeScriptはJavaScriptの型付けされたオープンソーススーパーセットであり、静的型付け、型アノテーション、型推論に加えてインタフェースなどのオブジェクト指向の機能を提供します。TypeScriptには、クラスをデコレート/アノテーションするためのDecoratorsという実験的な機能と、追加機能を提供するためのクラスメンバーが含まれています。TypeScriptは現代の大規模アプリケーション用に設計されています。この記事では、MySQLデータベースでTypeScriptを使用する方法について説明しました。TypeORMライブラリは、データベースとの接続、エンティティの作成と保存、エンティティ間の関係の作成、エンティティの検索、エンティティの更新と削除に使用されます。Node.js上で動作し、MySQLデータベースに接続して雑誌カタログをモデル化する、エンドツーエンドのオブジェクトリレーショナルマッピングアプリケーションでTypeScriptを使用する方法を示しました。Vohra氏は、Sun認定のJavaプログラマーおよびSun認定のWebコンポーネント開発者です。Magazine、devxに公開しています。JDeveloperも出版しています。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。