ホームページ > ウェブフロントエンド > jsチュートリアル > 3 javascript orm you no no no no no no no no no not

3 javascript orm you no no no no no no no no no not

Lisa Kudrow
リリース: 2025-02-19 08:56:17
オリジナル
761 人が閲覧しました

3 JavaScript ORMs You Might Not Know

コアポイント

    この記事では、アプリケーションの複雑なデータを管理するために使用できる3つのJavaScript ormを紹介します:bookshelf.js、execelize、およびlovefield。 bookshelf.jsおよびexecelizeはnode.js用に設計されており、postgreSQL、MySQL、MariadB、SQLite3、およびMSSQLでうまく動作します。 Lovefieldは、Googleが開発したIndexEdDB上に構築されたWebアプリケーションリレーショナルデータベースです。
  • bookshelf.jsおよびSequelizeにより、開発者はテーブル間で1対1の、1対多で多くの関係を作成できます。また、トランザクション、関係、読み取り、複製も​​サポートしています。ラブフィールドは生のSQLクエリをサポートしていませんが、SQLの構文を模倣し、酸トランザクション、制限とスキップ、パラメーター化されたクエリなどをサポートします。
  • SQLの知識は開発者にとって重要ですが、JavaScript ORMは複雑なデータとデータベースの相互作用を処理することにより、作業を簡素化できます。 ORMの選択は、プロジェクトの特定の要件、データベースの複雑さ、および必要な機能に基づいている必要があります。
JavaScriptには、単なるブラウザスクリプトやインタラクティブなWebサイト以上のものがあります。ほぼどこでも使用できます:

    ブラウザサイド:ECMAScriptとDOM APIに限定する必要はありません。 CoffeescriptとDartは、コードをより速くより良く書くのに役立つ純粋なJavaScript言語にコンパイルされます。
  • サーバー側:node.jsの数とその多くのフレームワークの数が増加しており、フロントエンド開発者がフルスタック開発者になるのに役立ちます。
  • モバイルアプリ:CordovaやIonicやNativeScriptなどのフレームワークを使用して、JavaやSwift/Objective-Cなどの他の言語を学習せずにモバイルアプリケーションをより速く構築できます。これらのフレームワークを使用すると、モバイルプラットフォーム間でソースコードを共有することもできます。
  • IoT:SitePointは、Patrick Catanzaritiの記事をいくつか公開しています。これは、この点で非常に役立ちます。
  • 開発アプリケーションの複雑さが増加するにつれて、データベースサーバー(PostgreSQLなど)、モバイルデバイス用の埋め込みSQLite、または内部にあるかどうかにかかわらず、データベースに保存されているすべてのデータを処理するためのツールが必要です。ブラウザ。これがORMがしていることです。 Javaコミュニティには冬眠があり、PHP開発者はDoctrine ORMを使用でき、JavaScriptコミュニティには独自のORMもあります。この記事では、次のアプリケーションで複雑なデータを処理するのに役立つJavaScript ormsについて説明します。

bookshelf.js

bookshelf.jsは、postgresql、mysql、mariadb、およびsqlite3でうまく機能するように設計されたnode.js ormです。 Knex SQLクエリビルダーの上に構築され、モデルやコレクション、同様の命名規則など、BackBone.jsのパターンに従います。バックボーンを使用したことがある場合は、非常に迅速に本棚に慣れることがあります。本棚をインストールするには、Knexとデータベースドライバーをインストールする必要があります。

# 获取 knex
$ npm install knex --save

# 获取 bookshelf
$ npm install bookshelf --save

# 获取其中一个数据库驱动程序
$ npm install pg
$ npm install mysql
$ npm install mariasql
$ npm install sqlite3
ログイン後にコピー
ログイン後にコピー

インストールが完了したら(パッケージファイルに追加されるように、-saveフラグを渡すようにしてください)、node.jsアプリケーションで使用できます。

var knexInstance = require('knex')({
  client: 'mysql', // 或您正在使用的数据库
  connection: {
    host     : '127.0.0.1',
    user     : 'scott',
    password : 'tiger', // Scott 的猫的名字
    database : 'db_name',
    charset  : 'utf8'
  }
});
// 通过传递 Knex 实例来初始化 Bookshelf
var bookshelf = require('bookshelf')(knexInstance); 

var User = bookshelf.Model.extend({
  tableName: 'users'
});
ログイン後にコピー
ログイン後にコピー
ご覧のとおり、knexインスタンスをパラメーターとして渡して、本棚オブジェクトを作成します。その後、上記の例のユーザーテーブルに使用されるユーザーモデルと同様に、モデルのextend()メソッドを使用してアプリケーションにモデルを作成できます。本棚は、アプリケーション全体で使用する唯一の本棚のインスタンスであることを忘れないでください。そのため、シングルトンにラップしたり、別のファイルに入れたり、必要に応じて紹介するなど、アプリケーションのどこでも利用できるようにする方が良いでしょう。本棚を使用すると、1対1の、1対10の関係と多くの関係を持つことができます。私たちの場合、それは次のとおりです

チェックアウトしたい場合は、Githubで本棚を見つけることができます。
var User = bookshelf.Model.extend({
  tableName: 'users',
  posts: function() {
    return this.hasMany(Post);
  }
});

var Post = bookshelf.Model.extend({
  tableName: 'posts',
  user: function() {
    return this.belongsTo(User);
  }
});
ログイン後にコピー
ログイン後にコピー

の後遺症 Sequelizeは、node.jsとio.jsの別のORMです(結局マージされます)。 PostgreSQL、MySQL、MariadB、SQLite、MSSQLをサポートし、強力なトランザクションサポート、関係、読み取り、レプリカ機能を備えています。次のコマンドを実行してインストールできます。

次の例に示すように使用できます。

# 安装 Sequelize
$ npm install --save sequelize

# 安装数据库驱动程序
$ npm install --save pg pg-hstore

# 对于 mysql 和 mariadb 方言
$ npm install --save mysql 
$ npm install --save sqlite3

# MSSQL
$ npm install --save tedious
ログイン後にコピー

Apecelize.String上記のSQLのVarcharと一致します。他のデータ型は、integer for integer and sackelize.blob for blob(またはpostgresのbytea)のintegerです。ここで完全なリストを読むことができます。 Sequelizeを使用すると、テーブル間の関係を作成できます。たとえば、プロジェクトと呼ばれるモデルと開発者と呼ばれる別のモデルがあり、複数の開発者をプロジェクトに割り当てたい場合は、これを行うことができます。
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql', // 使用其中一个

  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },

  // 仅限 SQLite
  storage: 'path/to/database.sqlite'
});

// 或者您可以简单地使用连接 uri
var sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');
ログイン後にコピー

これにより、必要なフィールドが各モデルに追加されることが保証されます(この場合、開発者モデルのProject_id)。または、Sequelize APIの恩恵を受けることができないと感じた場合は、RAW SQLクエリを実行できます。 SequelizeはGitHubでも入手できます。

var User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    field: 'first_name' // `first_name` 列与 User.firstName 匹配
  },
  lastName: {
    type: Sequelize.STRING
  }
}, {
  freezeTableName: true // 模型 tableName (`user`) 将与模型名称相同
});
ログイン後にコピー

lovefield

Project.hasMany(Developer, {as: 'devs'})
ログイン後にコピー

ラブフィールドは本当のormではありません。実際、これは、Googleによって開発され、JavaScriptで完全に書かれたIndexEdDB上に構築されたWebアプリケーションのリレーショナルデータベースです。生のSQLクエリはサポートしていませんが、SQL構文を模倣しようとするAPIが付属しています。 bower:

を使用してインストールできます

またはnpm:

HTMLファイルに追加した後、フロントエンドのリレーショナルデータベースとして使用を開始できます。データベースとテーブルを作成するのは簡単です:

$ bower install lovefield --save
ログイン後にコピー
このコードスニペットは、TODO_DBという名前のデータベースと、指定された列(プライマリキー、タスク、締め切り、および完了したID)の名前のデータベースを作成する方法を示しています。この時点で、すべての未完成のタスクのリストを取得するには、コードは次のとおりです。

上記のコードはSQLに非常に似ています。同じクエリは次のとおりです。
# 获取 knex
$ npm install knex --save

# 获取 bookshelf
$ npm install bookshelf --save

# 获取其中一个数据库驱动程序
$ npm install pg
$ npm install mysql
$ npm install mariasql
$ npm install sqlite3
ログイン後にコピー
ログイン後にコピー

次のようにソートすることもできます

var knexInstance = require('knex')({
  client: 'mysql', // 或您正在使用的数据库
  connection: {
    host     : '127.0.0.1',
    user     : 'scott',
    password : 'tiger', // Scott 的猫的名字
    database : 'db_name',
    charset  : 'utf8'
  }
});
// 通过传递 Knex 实例来初始化 Bookshelf
var bookshelf = require('bookshelf')(knexInstance); 

var User = bookshelf.Model.extend({
  tableName: 'users'
});
ログイン後にコピー
ログイン後にコピー
これらの簡単なクエリに加えて、ラブフィールドは参加など、より複雑なクエリを処理できます。 2つのテーブルプロジェクトと開発者(それぞれテーブルプロジェクトと開発者を参照)に参照があり、特定の開発者のすべてのプロジェクトを見たい場合は、次のように書きます。

したがって、LovefieldはindexedDBの上のSQLレイヤーとして機能することがわかります。また、酸トランザクション(原子性、一貫性、分離、持続性)、制限とスキップ(ページング時に役立つ)、パラメーター化されたクエリなどをサポートします。他の骨のように、GithubからLovefieldをダウンロードできます。
var User = bookshelf.Model.extend({
  tableName: 'users',
  posts: function() {
    return this.hasMany(Post);
  }
});

var Post = bookshelf.Model.extend({
  tableName: 'posts',
  user: function() {
    return this.belongsTo(User);
  }
});
ログイン後にコピー
ログイン後にコピー

結論

すべての開発者はSQLの知識を持っている必要がありますが、SQLクエリを書くことは退屈で、特に非常に多くのORMがいます。彼らがあなたの仕事を楽にするとき、最初にそれらを使用してみませんか?この記事では、これまでにリリースされた最も重要なORMのいくつかを取り上げました。各ORMに提供された例のおかげで、どのORMを使用するか、どのORMがニーズに合うかを意識的に決定できるようになりました。あなたはどうですか?どのJavaScript ormを使用していますか?以下の選択についてコメントしてください。

(そのコンテンツが記事のトピックに弱く関連しており、長すぎるため、後続のFAQセクションは省略されています。これは擬似オリジナル効果に影響します。

以上が3 javascript orm you no no no no no no no no no notの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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