ホームページ > ウェブフロントエンド > jsチュートリアル > ORM と JavaScript で TypeOrm を使用した MongoDb から MySql データベースへのデータの移行/追加

ORM と JavaScript で TypeOrm を使用した MongoDb から MySql データベースへのデータの移行/追加

Linda Hamilton
リリース: 2024-12-23 17:20:18
オリジナル
854 人が閲覧しました

ORM とは何ですか?
オブジェクト リレーショナル マッピング、または単に ORM は、生のデータベース クエリを作成せずにデータベースと対話するのに役立つライブラリまたはツールです。

データベースのテーブルと行を直接管理する代わりに、コード内でいくつかのオブジェクトを操作し、ORM がこのオブジェクトをデータベース クエリに変換し、データベースからデータが取得されると、ORM がデータをオブジェクトにマッピングし直します。

ORM は、オブジェクト指向プログラムとリレーショナル データベースの間にブリッジを作成します。

使用例:
JavaScript/TypeScript アプリケーションを作成していて、バックエンド サービス用のデータベースが必要な場合は、ORM を使用してアプリケーションをデータベースに接続できます。

ORM and Migrating/Adding Data to MySql Database from MongoDb using TypeOrm in javaScript

さまざまな言語で使用される ORM は次のとおりです。

  1. JavaScript/TypeScript : TypeOrm、Sequelize
  2. Python : Django ORM、SQLAlchemy
  3. Java : 休止状態

アプリケーションで ORM を使用する必要があるのはなぜですか?

  1. セキュリティを向上させ、SQL インジェクション攻撃の可能性を排除する ORM ツールが構築されています
  2. ORM ツールを使用すると、SQL を使用する場合よりも記述するコードの量が少なくなります。
  3. TypeORM を使用すると、あるデータベースから別のデータベース (例: MySQL から PostgreSQL) への切り替えが簡単で、変更も最小限で済むため、データベース要件が進化するプロジェクトに高度に適応できます。

JavaScript で TypeOrm を使用して、mongodb から Mysql データベースにデータを追加する方法を理解しましょう。

まず最初に行う必要があるのは、MySql と MongoDb の接続を設定することです

最初に、指定された資格情報とホスト情報を使用して MySql データベースに接続する DataSource を使用して構成を定義します。また、エンティティ クラスをデータベース テーブルにマッピングして、orm 機能を有効にします。ここにそのコードがあります。

よりよく理解していただくために、私が取り組んだ簡単な大学モデルを取り上げます。

ファイル名:connect.js

const { College } = require('./sqlmodels/College.model');   //taking model as a example here 
const sqlDataSource = new DataSource({
    type: "mysql",
    host: "XXXX", 
    port:  3306,
    username: 'myUserName',
    password: 'MyPassWord',
    database: 'MyDb',
    driver: require("mysql2"),  
    connectTimeout: 10000,
    entities: [
         College  // define all your entities here 
    ],
    synchronize: true,
    logging: false
}); 
ログイン後にコピー
ログイン後にコピー

次に、sqlDataSource で定義された資格情報と構成を使用して、MySQL データベースに接続します。そのコードは次のとおりです

module.exports.connectSQL = async function () {
    try {
        console.log("Trying to connect to SQL Database...");
        await sqlDataSource.initialize();
        console.log("Successfully connected to SQL Database");
    } catch (error) {
        console.error("Error occured while connecting SQL", error);

    }
}
ログイン後にコピー

常に適切なログを含む try catch ブロック内にコードを記述してください。これにより、間違いを犯した場合にコードをより迅速にデバッグできます。

次に進む前に、mongoDb データベースに適切に接続していることも確認してください。

まず、別のフォルダーでテーブルのスキーマを定義します。それに sqlmodels という名前を付け、その中にモデルのページを作成します。
このファイルを、接続用のコード (最初のコード) を記述した connect.js ファイルにインポートする必要があります

これが大学スキーマのコードです

const { EntitySchema, Entity, Column } = require('typeorm');

module.exports.College = new EntitySchema({
    name: 'College',
    tableName: 'College',
    columns: {
        _id: {
            primary: true,     // true if _id is your primary key
            type: 'varchar',  // define the type 
            length: 255,

        },
        college_name: {
            // define name of the column and its properties
            name: 'college_name', 
            type: 'varchar',
            length: 255,
            default: 'NO COLLEGE', 
            nullable: false

        }
    }

})
ログイン後にコピー

mongoDb 接続が設定されていること、およびその接続に対してスキーマが定義されていることを確認してください。

最後に行う必要がある重要なことは、mongoDb からデータを取得して SQL テーブルに追加する関数を作成することです。

const { College } = require('./sqlmodels/College.model');   //taking model as a example here 
const sqlDataSource = new DataSource({
    type: "mysql",
    host: "XXXX", 
    port:  3306,
    username: 'myUserName',
    password: 'MyPassWord',
    database: 'MyDb',
    driver: require("mysql2"),  
    connectTimeout: 10000,
    entities: [
         College  // define all your entities here 
    ],
    synchronize: true,
    logging: false
}); 
ログイン後にコピー
ログイン後にコピー

ここではデータをチャックに取得してテーブルに挿入しました。mongoDb では一度に大量のデータをフェッチすることが不可能なため、大量のデータを扱う場合に役立ちます。

これは私の最初のブログなので、自分自身を改善するためにあなたの提案やフィードバックを歓迎します。
読んでいただきありがとうございます?

以上がORM と JavaScript で TypeOrm を使用した MongoDb から MySql データベースへのデータの移行/追加の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート