答えて
私はKnex
を一度も使用していませんが、私はInversifyJSの著者です。私はあなたを助けようとします。
Knex
docsに基づいて、次の操作を行うことができます。
var knex = require('knex')({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
私はまた、タイプhere TSを見つけました。
あなたが注入したいものがknex
インスタンスであると仮定します。次のようにすることができます:
import * as Knex from 'knex';
import { Kernel } from "inversify";
// configuration
let configuration: Knex.Config = {
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
};
// instance
let knex: Knex = Knex(configuration);
let kernel = new Kernel();
kernel.bind<Knex>("Knex").toConstantValue(knex);
こうしてknexはシングルトンになります。
let knexFactory = kernel.get<interfaces.Factory<Knex>>("Factory<Knex>");
let knex = knexFactory();
:
import * as Knex from 'knex';
import { interfaces, Kernel } from "inversify";
kernel.bind<Knex.Config>("KnexConfig").toConstantValue({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
kernel.bind<interfaces.Factory<Knex>>("Factory<Knex>")
.toFactory((ctx: interfaces.Context) => {
let config = context.kernel.get<Knex.Config>("KnexConfig");
return Knex(config);
});
これらのソリューションは、工場をご提供します。あなたはまた、設定を分けることができ
import * as Knex from 'knex';
import { interfaces, Kernel } from "inversify";
kernel.bind<interfaces.Factory<Knex>>("Factory<Knex>")
.toFactory((ctx: interfaces.Context) => {
return Knex({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
});
:あなたはそれをシングルトンにしたくない場合は、工場が必要になります
工場は、@inject("Factory<Knex>")
注釈を使用して他のクラスに注入することができます。
あなたはシングルトンを使用しないと、あなたは動的な値の注入が必要になりますファクトリを使用したくない場合は、次の
kernel.bind<Knex>("Knex").toDynamicValue((context: interfaces.Context) => {
return Knex({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
});
動的な値注入が新しいknexインスタンスを注入します。工場ではなくシングルトンではない:
let knex = kernel.get<Knex>("Knex>");
私はこれらの提案をテストしていないことに注意してください。彼らがあなたを正しい方向に導くことを願っています。
knexインスタンスは接続のような合理的なリソースプール。この答えは確かに素晴らしいガイドです。 – Sombriks
シングルトンのソリューションは魅力的に働いた ありがとう! – user4092086
それはあなたのために働いて問題ない幸せ:) –
- 1. Knex Migrator CLIコマンドを使用してmysql dbを作成するにはどうすればよいですか?
- 2. ワイルドカードを使用してディレクトリからオブジェクトを挿入するにはどうすればよいですか?
- 3. asp.netでJsonserviceを使用してイメージを挿入するにはどうすればよいですか?
- 4. vbaに+記号を使用して行を挿入するにはどうすればよいですか?
- 5. ストアドプロシージャを使用してファイルをMySQLデータベースに挿入するにはどうすればよいですか?
- 6. PHPを使用してswfファイルにリンクを挿入するにはどうすればよいですか?
- 7. javaを使用してリンクリストにノードを挿入するにはどうすればよいですか?
- 8. WCFサービスを使用してSQLテーブルに値を挿入するにはどうすればよいですか?
- 9. nodejsを使用して.csvファイルをmonodbに挿入するにはどうすればよいですか?
- 10. javascriptを使用してdiv/spanタグをテキストエリアに挿入するにはどうすればよいですか?
- 11. プリペアドステートメントを使用してPDOにフォームデータを挿入するにはどうすればよいですか?
- 12. Nodejsを使用してMariaDBにjsonデータを挿入するにはどうすればよいですか?
- 13. photonkitを使用して電子タブにコンテンツを挿入するにはどうすればよいですか?
- 14. HtmlWebpackPluginを使用してコードの前にバンドルソースを挿入するにはどうすればよいですか?
- 15. Linqを使用してオブジェクトにリストを挿入するにはどうすればよいですか?
- 16. MVCGrid.Net Ninjectを使用してMVCGridConfigクラスにサービスを挿入するにはどうすればよいですか?
- 17. java APIを使用してcassandraデータベースにJSONを挿入するにはどうすればよいですか?
- 18. トリガ&挿入プロシージャを使用してビューにデータを挿入するとき、「空白」挿入を避けるにはどうすればよいですか?
- 19. Reformを使用して特集オブジェクトを事前挿入するにはどうすればよいですか?
- 20. Guiceを使用して、境界付きワイルドカードクラスを挿入するにはどうすればよいですか?
- 21. Guiceを使用してジェネリックパラメータを挿入するにはどうすればよいですか?
- 22. pymysqlを使用して一括挿入クエリを実行するにはどうすればよいですか?
- 23. Ninjectを使用して静的プロパティを挿入するにはどうすればよいですか?
- 24. PDOを使用してNULL値を挿入するにはどうすればよいですか?
- 25. MacBookを使用して0x08 ASCII文字を挿入するにはどうすればよいですか?
- 26. Cordova Pluginを使用して通知機能を挿入するにはどうすればよいですか?
- 27. Sparkを使用して挿入上書きを実行するにはどうすればよいですか?
- 28. Guiceを使用して、スーパークラスのコンストラクタパラメータを挿入するにはどうすればよいですか?
- 29. ソフトウェアランディングページテンプレートを使用してブートストラップカルーセルを挿入するにはどうすればよいですか?
- 30. チャネルを使用して外部キーIDを挿入するにはどうすればよいですか?
クラスを作成して1つのknexインスタンスを処理し、必要なときにいつでも注入することができます。 – Sombriks
私はknexを初期化するためのファクトリを作成したこの記事に従っていましたが、逆に、ファクトリをインターフェイスにバインドする方法がわかりません – user4092086