コアポイント
近年、JavaScriptは人気が急上昇しています。長年にわたり、人々はこの人気のある言語をサーバー側に何度も適用しようとしてきました。最も成功した試みの1つはnode.jsでした。これは、サーバーアプリケーションをすばやく書き込む方法としてコミュニティに推奨されていました。ノードのセールスポイントは、パフォーマンスと開発時間の両方で速度です。この人気により、コミュニティは成長を続けており、プロジェクトはより多くの貢献者の恩恵を受けて、Express.jsなどの高品質のモジュールをもたらします。
したがって、人々はノードを使用して完全なバックエンドを構築し始めました。バックエンドシステムがすべき最も重要なことの1つは、データベースと効果的に通信することです。これは、オブジェクト関係マッピング(ORM)ソフトウェアが登場する場所です。多くの場合、開発者はデータベースと通信するために使用しているプログラミング言語とSQLに習熟する必要があります。 ORMは、開発者が選択したプログラミング言語でオブジェクトを使用してデータベースと対話できるようにすることにより、開発プロセスを簡素化します。この記事では、ormを紹介し、bookshelf.js ormに特別な注意を払っています。
ormとは何ですか?
wikipediaは、オブジェクト関係マッピングを次のように定義します
オブジェクト指向のプログラミング言語で、互換性のないタイプシステム間でデータを変換するためのプログラミング手法。これにより、実際には、プログラミング言語で内部で使用できる「仮想オブジェクトデータベース」が作成されます。bookshelf.jsの例この例では、プログラミング言語はJavaScriptであり、互換性のないシステムはMySQLなどのリレーショナルデータベースシステムです。これは、ORMライブラリが、従来のJavaScriptオブジェクトとの対話と同じ方法でデータベースと通信できるようにする必要があることを意味します。 node.jsには多くのormライブラリがあり、一般的なライブラリにはpersistence.js、sequelize.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>
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": "*" } }
// 当应用程序启动时 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' });
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をデータベースに接続するには、最初にデータベース構成でknex.jsを初期化する必要があります。次に、この初期化されたknexインスタンスをbookshelf.jsに渡します。基本的な例は次のとおりです
new Post({name: 'New Article'}).save().then(function(model) { // ... });
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を使用してデータベースにデータを保存する方法は?
<code>GET /api/article GET /api/article/:article_id POST /api/article</code>
bookshelf.jsを使用してデータベース内のデータを更新する方法は?
create table article ( id int not null primary key, title varchar(100) null, body text null, author varchar(100) null );
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": "*" } }
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でのトランザクションは、knex.jsが提供するトランザクションメソッドを使用して処理できます。例は次のとおりです。
var Article = bookshelf.Model.extend({ tableName: 'article' });
以上がbookshelf.jsを始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。