国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次

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

bookshelf.jsを使用してデータベースからデータを抽出するのは非常に簡(jiǎn)単です。モデルが提供するフェッチ方法を使用できます。例は次のとおりです。
上記のコード例の詳細(xì)の一部は、特定のデータベースと環(huán)境に従って調(diào)整する必要がある場(chǎng)合があることに注意してください。 さらに、最新情報(bào)とより詳細(xì)なガイダンスについては、bookshelf.jsの公式ドキュメントを參照することをお?jiǎng)幛幛筏蓼埂?

bookshelf.jsを始めましょう

Feb 21, 2025 am 10:13 AM

Getting Started with Bookshelf.js

コアポイント

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

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

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

ormとは何ですか?

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

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

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

bookshelf.jsの例

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

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

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

次にコードを呼び出すことに注意してください。 bookshelf.jsは、約束ベースのインターフェイスをサポートしています。この場(chǎng)合、これは、その後に渡された匿名関數(shù)がクエリが成功した場(chǎng)合にのみ呼び出されることを意味します。モデルは、ユーザーに関連付けられたプロパティにアクセスするために使用できる生成された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環(huán)境をセットアップする必要があります。

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

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

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

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データベーステーブルですべてのエントリを取得し、キャッチがエラーが発生した場(chǎng)合にのみ実行されます(ドキュメントにはより多くのモデルメソッドがあります)。

// 當(dāng)應(yīng)用程序啟動(dòng)時(shí)
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');
});
結(jié)論

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

bookshelf.js faq

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

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

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

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

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

bookshelf.jsをデータベースに接続するには、最初にデータベース構(gòu)成で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を使用してデータベースからデータを抽出するのは非常に簡(jiǎn)単です。モデルが提供するフェッチ方法を使用できます。例は次のとおりです。

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

bookshelf.jsを使用してデータベース內(nèi)のデータを更新する方法は?

create table article (
  id int not null primary key,
  title varchar(100) null,
  body text null,
  author varchar(100) null
);
データベース內(nèi)のデータは、保存方法を使用して更新できます。最初にモデルを抽出してから、新しいデータで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で関係を処理する方法は?

// 當(dāng)應(yīng)用程序啟動(dòng)時(shí)
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などのモデル間の関係に対処するいくつかの方法を提供します。複數(shù)の投稿モデルを備えたユーザーモデルの例は次のとおりです。

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

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

var Article = bookshelf.Model.extend({
  tableName: 'article'
});

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JSで日付と時(shí)間を操作する方法は? JSで日付と時(shí)間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時(shí)間を処理する場(chǎng)合は、次の點(diǎn)に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお?jiǎng)幛幛筏蓼埂?2。時(shí)間情報(bào)を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動(dòng)でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお?jiǎng)幛幛筏蓼?。これらの重要なポイントを?xí)得すると、一般的な間違いを効果的に回避できます。

JavaScript vs. Java:開発者向けの包括的な比較 JavaScript vs. Java:開発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動(dòng)作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動(dòng)的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaとJavaScriptの違いは何ですか? JavaとJavaScriptの違いは何ですか? Jun 17, 2025 am 09:17 AM

JavaとJavaScriptは、異なるプログラミング言語(yǔ)です。 1.Javaは、エンタープライズアプリケーションや大規(guī)模なシステムに適した、靜的に型付けされ、コンパイルされた言語(yǔ)です。 2。JavaScriptは動(dòng)的なタイプと解釈された言語(yǔ)であり、主にWebインタラクションとフロントエンド開発に使用されます。

See all articles