目次

bookshelf.jsをデータベースに接続する方法は?

bookshelf.jsを使用してデータベースからデータを抽出するのは非常に簡単です。モデルが提供するフェッチ方法を使用できます。例は次のとおりです。
上記のコード例の詳細の一部は、特定のデータベースと環境に従って調整する必要がある場合があることに注意してください。 さらに、最新情報とより詳細なガイダンスについては、bookshelf.jsの公式ドキュメントを参照することをお勧めします。

bookshelf.jsを始めましょう

Feb 21, 2025 am 10:13 AM

Getting Started with Bookshelf.js

コアポイント

  • bookshelf.jsは、javascript(特にnode.js)用のオブジェクトリレーショナルマッピング(orm)ソフトウェアであり、開発者が選択したプログラミング言語でオブジェクトを使用して、データベースと通信するプロセスを簡素化します。データベース。
  • ライブラリは、CRUD(作成、読み取り、更新、削除)を実行するためのシンプルで直感的な方法を提供し、約束ベースのインターフェイスをサポートします。つまり、クエリが成功した場合にのみ関数が呼び出されます。
  • 記事でブログJSON APIを作成する例に示されているように、bookshelf.jsをExpress.jsと併用してAPIを構築することができ、基礎となるデータベーステーブル構造をカプセル化して通常のJavaScriptを露出させることができますクエリ用のオブジェクト。

近年、JavaScriptは人気が急上昇しています。長年にわたり、人々はこの人気のある言語をサーバー側に何度も適用しようとしてきました。最も成功した試みの1つはnode.jsでした。これは、サーバーアプリケーションをすばやく書き込む方法としてコミュニティに推奨されていました。ノードのセールスポイントは、パフォーマンスと開発時間の両方で速度です。この人気により、コミュニティは成長を続けており、プロジェクトはより多くの貢献者の恩恵を受けて、Express.jsなどの高品質のモジュールをもたらします。

したがって、人々はノードを使用して完全なバックエンドを構築し始めました。バックエンドシステムがすべき最も重要なことの1つは、データベースと効果的に通信することです。これは、オブジェクト関係マッピング(ORM)ソフトウェアが登場する場所です。多くの場合、開発者はデータベースと通信するために使用しているプログラミング言語とSQLに習熟する必要があります。 ORMは、開発者が選択したプログラミング言語でオブジェクトを使用してデータベースと対話できるようにすることにより、開発プロセスを簡素化します。この記事では、ormを紹介し、bookshelf.js ormに特別な注意を払っています。

ormとは何ですか?

wikipediaは、オブジェクト関係マッピングを次のように定義します

オブジェクト指向のプログラミング言語で、互換性のないタイプシステム間でデータを変換するためのプログラミング手法。これにより、実際には、プログラミング言語で内部で使用できる「仮想オブジェクトデータベース」が作成されます。

この例では、プログラミング言語はJavaScriptであり、互換性のないシステムはMySQLなどのリレーショナルデータベースシステムです。これは、ORMライブラリが、従来のJavaScriptオブジェクトとの対話と同じ方法でデータベースと通信できるようにする必要があることを意味します。 node.jsには多くのormライブラリがあり、一般的なライブラリにはpersistence.js、sequelize.js、bookshelf.jsが含まれます。この記事では、bookshelf.jsを紹介します。

bookshelf.jsの例

データベースインタラクションは通常、4つのCRUD操作を中心に展開します。これは、作成、読み取り、更新、削除です。 bookshelf.jsは、これらの操作を実行するための直感的な方法を提供します。たとえば、次のような操作を作成します。

Postが対応するデータベーステーブルを備えたモデルであり、名前はデータベーステーブルの列に対応するプロパティであると仮定します。

new Post({name: 'New Article'}).save().then(function(model) {
  // ...
});
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
同様に、読み取り操作は次のとおりです
new Post({name: 'New Article'}).save().then(function(model) {
  // ...
});
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次にコードを呼び出すことに注意してください。 bookshelf.jsは、約束ベースのインターフェイスをサポートしています。この場合、これは、その後に渡された匿名関数がクエリが成功した場合にのみ呼び出されることを意味します。モデルは、ユーザーに関連付けられたプロパティにアクセスするために使用できる生成されたJavaScriptオブジェクトです。この例では、model.get( 'gender')がユーザーの性別を返します。

bookshelf.jsおよびexpress.js < より完全な例については、次のリソースを使用してブログを作成するために委任されているとします。

そして、クライアントはすでに次の表を持っています:

// select * from `user` where `email` = 'user@mail.com'
new User({email: 'user@mail.com'})
  .fetch()
  .then(function(model) {
    console.log(model.get('gender'));
  });
ログイン後にコピー
ログイン後にコピー

まず、package.jsonを使用してExpress.js環境をセットアップする必要があります。

<code>GET  /api/article
GET  /api/article/:article_id
POST /api/article</code>
ログイン後にコピー
ログイン後にコピー
Bookshelfはそれに依存しているため、Knexクエリビルダーが必要であり、約束を処理するにはBluebirdが必要です。 app.js構造は次のとおりです

MySQLデータベースはブログと呼ばれます。記事モデルを定義し、記事の表にバインドする必要があります。 // {モデル定義コードはこちら}を置き換えます。
create table article (
  id int not null primary key,
  title varchar(100) null,
  body text null,
  author varchar(100) null
);
ログイン後にコピー
ログイン後にコピー

間違いなく、これがbookshelf.jsでモデルを定義するために必要なすべてです。このモデルを使用して、APIのデータベースを照会できるようになりました。まず、GET /API /記事メソッドは、データベース内のすべての記事を返す必要があります。

bookshelf.jsで
{
  "name": "article_api",
  "description": "expose articles via JSON",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "bluebird": "^2.1.3",
    "body-parser": "^1.3.1",
    "express": "4.4.3",
    "mysql": "*",
    "knex": "*",
    "bookshelf": "*"
  }
}
ログイン後にコピー
ログイン後にコピー
fetchallデータベーステーブルですべてのエントリを取得し、キャッチがエラーが発生した場合にのみ実行されます(ドキュメントにはより多くのモデルメソッドがあります)。

// 当应用程序启动时
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var Promise = require('bluebird');

var dbConfig = {
  client: 'mysql',
  connection: {
    host: 'localhost',
    user: 'root',
    password: 'your_password',
    database: 'blog',
    charset: 'utf8'
  }
};

var knex = require('knex')(dbConfig);
var bookshelf = require('bookshelf')(knex);

app.set('bookshelf', bookshelf);

var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  next();
};

app.use(allowCrossDomain);
// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded());

// 解析 application/json
app.use(bodyParser.json());

// 解析 application/vnd.api+json 为 json
app.use(bodyParser.json({type: 'application/vnd.api+json'}));

// 在其他地方,使用 bookshelf 客户端:
var bookshelf = app.get('bookshelf');

// {我们的模型定义代码在这里}

app.listen(3000, function() {
  console.log('Express started at port 3000');
});
ログイン後にコピー
ログイン後にコピー
結論

var Article = bookshelf.Model.extend({
  tableName: 'article'
});
ログイン後にコピー
ログイン後にコピー
node.jsはテクノロジーとして開発されており、Express.jsなどのモジュールを介してWebアプリケーションとAPIを構築するために使用できます。 bookshelf.jsは、基礎となるデータベーステーブル構造をカプセル化し、クエリ用に通常のJavaScriptオブジェクトを公開することにより、node.jsアプリケーションのリレーショナルデータベースと相互作用します。この記事では、高レベルの紹介を提供します。 DEMOプロジェクトの完全な実装は、GitHubで利用できます。 (githubリンクは、存在する場合はここに追加する必要があります)

bookshelf.js faq

bookshelf.jsとは何ですか?なぜそれを使用する必要があるのですか?

bookshelf.jsは、SQLデータベースと対話するためのシンプルでエレガントなAPIを提供するJavaScriptライブラリです。トランザクション、緊急/首の緊急関係の負荷、多型の関連性などをサポートしています。 bookshelf.jsを使用することの主な利点は、そのシンプルさと柔軟性です。これにより、より多くのことをしながらコードを書き込むことができ、開発プロセスがより速く、より効率的になります。

bookshelf.jsをインストールする方法は?

bookshelf.jsをインストールするには、システムにnode.jsとnpmをインストールする必要があります。インストールが完了したら、端末でコマンドを実行してbookshelf.jsをインストールできます。これにより、bookshelf.js、knex.js(SQLクエリビルダー)およびSQLite3(軽量ディスクベースのデータベース)をインストールします。

bookshelf.jsをデータベースに接続する方法は?

bookshelf.jsをデータベースに接続するには、最初にデータベース構成でknex.jsを初期化する必要があります。次に、この初期化されたknexインスタンスをbookshelf.jsに渡します。基本的な例は次のとおりです

new Post({name: 'New Article'}).save().then(function(model) {
  // ...
});
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
bookshelf.jsでモデルを定義する方法は?

bookshelf.jsでは、モデルはbookshelf.jsが提供する基本クラスモデルを拡張することによって定義されます。ユーザーモデルを定義する例は次のとおりです。

bookshelf.jsを使用してデータベースからデータを抽出する方法は?
// select * from `user` where `email` = 'user@mail.com'
new User({email: 'user@mail.com'})
  .fetch()
  .then(function(model) {
    console.log(model.get('gender'));
  });
ログイン後にコピー
ログイン後にコピー

bookshelf.jsを使用してデータベースからデータを抽出するのは非常に簡単です。モデルが提供するフェッチ方法を使用できます。例は次のとおりです。

bookshelf.jsを使用してデータベースにデータを保存する方法は?
<code>GET  /api/article
GET  /api/article/:article_id
POST /api/article</code>
ログイン後にコピー
ログイン後にコピー
また、bookshelf.jsを使用してデータベースにデータを保存することも簡単です。モデルが提供する保存方法を使用できます。例は次のとおりです。

bookshelf.jsを使用してデータベース内のデータを更新する方法は?

create table article (
  id int not null primary key,
  title varchar(100) null,
  body text null,
  author varchar(100) null
);
ログイン後にコピー
ログイン後にコピー
データベース内のデータは、保存方法を使用して更新できます。最初にモデルを抽出してから、新しいデータでSaveを呼び出すだけです。例は次のとおりです。

bookshelf.jsを使用してデータベースからデータを削除するにはどうすればよいですか?

{
  "name": "article_api",
  "description": "expose articles via JSON",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "bluebird": "^2.1.3",
    "body-parser": "^1.3.1",
    "express": "4.4.3",
    "mysql": "*",
    "knex": "*",
    "bookshelf": "*"
  }
}
ログイン後にコピー
ログイン後にコピー
モデルが提供するDestroyメソッドを使用して、データをデータベースから削除できます。例は次のとおりです。

bookshelf.jsで関係を処理する方法は?

// 当应用程序启动时
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var Promise = require('bluebird');

var dbConfig = {
  client: 'mysql',
  connection: {
    host: 'localhost',
    user: 'root',
    password: 'your_password',
    database: 'blog',
    charset: 'utf8'
  }
};

var knex = require('knex')(dbConfig);
var bookshelf = require('bookshelf')(knex);

app.set('bookshelf', bookshelf);

var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  next();
};

app.use(allowCrossDomain);
// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded());

// 解析 application/json
app.use(bodyParser.json());

// 解析 application/vnd.api+json 为 json
app.use(bodyParser.json({type: 'application/vnd.api+json'}));

// 在其他地方,使用 bookshelf 客户端:
var bookshelf = app.get('bookshelf');

// {我们的模型定义代码在这里}

app.listen(3000, function() {
  console.log('Express started at port 3000');
});
ログイン後にコピー
ログイン後にコピー
BookShelf.jsは、Hasone、Hasmany、Beluntsto、Belongstomanyなどのモデル間の関係に対処するいくつかの方法を提供します。複数の投稿モデルを備えたユーザーモデルの例は次のとおりです。

bookshelf.jsのトランザクションを処理する方法は?

Bookshelf.jsでのトランザクションは、knex.jsが提供するトランザクションメソッドを使用して処理できます。例は次のとおりです。

var Article = bookshelf.Model.extend({
  tableName: 'article'
});
ログイン後にコピー
ログイン後にコピー

上記のコード例の詳細の一部は、特定のデータベースと環境に従って調整する必要がある場合があることに注意してください。 さらに、最新情報とより詳細なガイダンスについては、bookshelf.jsの公式ドキュメントを参照することをお勧めします。

以上がbookshelf.jsを始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptエンジン:実装の比較 JavaScriptエンジン:実装の比較 Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScript:Web言語の汎用性の調査 JavaScript:Web言語の汎用性の調査 Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

See all articles