およびFirebird SQL Server



それは何ですか


NodeJS用のFirebird接続モジュールの作成者である私は、モジュールがまだ非常に未加工であることを考慮して、それについての投稿を長い間延期しました。 さらに、必要なすべての機能が既にモジュールに含まれているため、モジュールの開発は多少停滞しています(ただし、まだ普遍的とは言えません)。
時々、特定されたエラーを修正するか、NodeJSの最新の安定バージョンとの互換性を確保するために何かを修正する必要が生じるだけです。 NodeJSコミュニティがNoSQLソリューションに注力しているため、このモジュールは人気がないと言わざるを得ません。 そして、Firebirdコミュニティは、明らかにNodeJSを注意深く見ていますが、それほど大きくはありません。 さらに、FirebirdはWindowsプラットフォームでDelphiと併用されることが非常に多いため、Windows固有のLinuxソリューションに興味を持つことも困難です。 ただし、Windowsサポートに向けたNodeJSプロジェクトの最近の重要な進歩は、このような人々の注目をプロジェクトに引き付ける希望を与えました。 この投稿では、NodeJSからFirebirdを操作する方法に焦点を当てます。 LinuxおよびWindowsのインストール手順、典型的な作業シナリオの例を示します。 ただし、このトピックは、Firebirdに少なくとも少し慣れている人向けに設計されています(実験にはデータベースサーバーの作業コピーが必要です)。 Firebirdに慣れていない人のために、出版物の最後に研究のためのリソースへのリンクが与えられます。

興味があれば、猫にようこそ。


設置


Linux

NodeJS

まず、NodeJSが必要です。 インターネットには、NodeJSのLinuxインストールガイドがたくさんあります。 それにもかかわらず、全体像を完成させるには、ここでもう1つ引用する必要があります。 Ubuntu 11.10 Server 32ビットディストリビューションをダウンロードしました。 仮想マシンでインストールが実行されました。 この出版物には、さまざまなディストリビューションの複雑さに対処する方法の説明は含まれていません。 それどころか、結果を得る最も簡単な方法の説明が必要です。
そのため、最小限のパッケージセットでUbuntu 11.10サーバーをインストールしました(OpenSSHサーバーのみ)。
2つのコンソールコマンドでNodeJSのコピーを取得できます。
sudo apt-get update sudo apt-get install nodejs 


ただし、新しいディストリビューションにもかかわらず、2011年夏の終わりに関連するNodeJSのバージョンを受け取ります。
 xdenser@ubuntu:~$ node > process.version 'v0.4.9' > .exit xdenser@ubuntu:~$ 


次に、NodeJSパッケージマネージャーをインストールする必要があります。
 sudo apt-get install npm 


接続するサーバーが既にある場合は、Firebird 2.5の開発パッケージも必要です。
 sudo apt-get install firebird2.5-dev 


サーバーがない場合は、サーバーをローカルにインストールできます。 このプロセスの説明は、出版物の範囲を超えています。

インストール時に、Firebirdアクセスモジュールがコンパイルされます。 このためには、コンパイラが必要です。
 sudo apt-get install g++ 


実際、この場合のアクセスモジュール自体は次のコマンドで設定されます
 sudo npm install firebird@0.0.5 -g 

または
 npm install firebird@0.0.5 


違いは、最初のケースでは、モジュールがグローバルにインストールされることです。 すべてのユーザー向け。
上記のコマンドはモジュールの古いバージョン(この記事を書いている時点での現在のバージョンはv0.0.8)をインストールしますが、ディストリビューションに含まれるNodeJSバージョンv0.4.9と互換性があります。

最新の最新バージョンをインストールするには、次のコマンドを入力する必要があります
 npm install firebird 


このためだけに、NodeJSをバージョン0.6.xに更新する必要があります。
現在、最も単純なパスを辿っています。

したがって、すべてが適切に設定されていることを確認します。
 xdenser@ubuntu:~$ node > require('firebird'); { createConnection: [Function], createConnectionPool: [Function], Stream: { [Function: Stream] super_: { [Function: Stream] super_: [Function: EventEmitter] } } } > .exit xdenser@ubuntu:~$ 




Windowsの場合、最低限、ご使用のバージョンのWindowsのインストールパッケージからFirebirdクライアントライブラリをインストールする必要があります。

Windows上のNodeJSを使用すると、最近は状況がずっと簡単になりました。 公式のインストールパッケージを使用して、npmパッケージマネージャーを受け取ることができます。

ただし、npmを使用してWindowsにfirebirdモジュールをインストールしないでください。モジュールはソースコードの形式で配布され、Windowsでの自動アセンブリはまだ利用できません。
Windowsの場合、NodeJSがすでに含まれている既製のアセンブリを使用できます。 スクリプトは、アセンブリのルートフォルダーに配置し、コマンドで実行する必要があります

 node.exe myScript.js 


次は?



何らかのデータベースへの接続を試みることができます。 これを行うには、2つのファイルを作成します

test.js:
 var fb = require('firebird'); console.log(fb); var cfg = require("./config").cfg; var conn = fb.createConnection(); console.log(conn); conn.connect(cfg.db, cfg.user, cfg.password, cfg.role, function(){ console.log("Connected to database"); conn.query("select * from rdb$relations", function(err,res){ if(err){ console.log("error"); console.log(err); return; } console.log( res ); var r = res.fetchSync("all",true); console.log( r ); conn.disconnect(); }); }); 


そして
config.js:
 exports.cfg = { // Database connection settings db: "localhost:test.fdb", user: "sysdba", password: "masterkey", role: "" }; 


当然、config.jsの接続パラメーターは独自のものに置き換える必要があります。
そして、コマンドを実行します
 node.exe test.js 


行実行
 console.log( r ); 

ファイルtest.jsから、SQLクエリの実行結果のコンソールダンプが得られます
 select * from rdb$relations 


小さなモジュールのマニュアル


すべてのNodeJSモジュールと同様に、モジュールは同様のコマンドでロードされます。
 var fb = require('firebird'); 


モジュールは基本的に2つのプロパティのみをエクスポートします。


現時点では、BLOBフィールドの使用を検討しません。
そして、パラメーターなしでcreateConnectionメソッド呼び出されます
 var conn = fb.createConnection(); 

このような呼び出しの後、connは、次のメソッドとプロパティを持つConnectionクラスのインスタンスと見なすことができます。


FBResultクラスのインスタンスは、2つのメソッドのみを提供します。


より完全なガイドは、モジュールに付属のREADMEファイルにあります。 GitHubのリポジトリでオンラインで読むこともできます

トランザクションを操作する

現在のバージョンのモジュールは、完全なトランザクション管理機能を提供していません。 各Connectionオブジェクトは、リクエストを実行する前にトランザクションを自動的に開始します(以前に開始されなかった場合、またはcommitSync、commit、rollbackSync、rollbackのいずれかのメソッドによって中断された場合)。

おそらく、モジュールの最初の実験には、この量の材料で十分です。 このトピックに興味がある場合は、BLOBフィールド、イベント、および準備されたクエリの使用例を公開します。

さらに、ブラウザを介してFirebirdデータベースへのSQLクエリを実行するための対話型サービスを実装するサンプルプロジェクトを準備しました。


参照:

Source: https://habr.com/ru/post/J133633/


All Articles