mongoose guide: Connections
mongooseのコネクションをどう扱うのか、オフィシャルのガイドを調べてみた。 以下は、その翻訳。
本当は、hapiでMongoDB使う方法を早くまとめたいのだけれど。
Connections
mongoose.connect()
メソッドを使って、MongoDBに接続できる。
mongoose.connect('mongodb://localhost/myapp');
これは、MongoDBのデフォルトポート(27017)上でローカルに稼働してるmyappデータベースに接続する為に、最低限必要なものである。あなたの環境に依存しているuri上のパラメータを幾つか指定することもできる。
mongoose.connect('mongodb://username:password@host:port/database?options...');
詳細は、mongodb connection string specを見よ。
Options
connect
メソッドは、下層ドライバに渡す為のoptionsオブジェクトも受け入れる。これに含まれる全てのオプションは、コネクションの文字列(uri)上で渡されたオプションより優先される。
mongoose.connect(uri, options);
以下のオプションキーが使用できる:
Key | Description |
---|---|
db | 接続dbのインスタンスに渡される |
server | 接続server(s)のインスタンスに渡される |
replset | 接続ReplSetのインスタンスに渡される |
user | 認証のためのusername (uriに記載がなければ) |
pass | 認証のためのpassword (uriに記載がなければ) |
auth | 認証のオプション |
mongos | 真偽値。trueなら、MongoDBに対する高可用性サポートが有効化 |
例:
var options = { db: { native_parser: true }, server: { poolSize: 5 }, replset: { rs_name: 'myReplicaSetName' }, user: 'myUserName', pass: 'myPassword' } mongoose.connect(uri, options);
注意: serverオプションauto_reconnectは、上書き可能なtrueがデフォルトに設定されている。dbオプションforceServerObjectIdは、上書き可能なfalseが設定されている。
使用できるオプションの更なる情報は、driverを見よ。
KeepAliveに関する注意
長時間稼働しているアプリケーションにおいて、KeepAliveの有効化は、よく用心すること。これを許可しない時、暫く時間が経ってから、何の理由もなしに"connection closed"が見られるだろう。そうだとしたら、これを読んだ後、keepAliveの有効化を決められるだろう。
options.server.socketOptions = options.replset.socketOptions = { keepAlive: 1 }; mongoose.connect(uri, options);
ReplicaSet Connections
幾つかのメソッドではreplica set への接続が使用されるが、一つのuriを渡す代わりに、複数のuriのカンマ区切りされたリストを渡す・
mongoose.connect('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]' [, options]);
Multi-mongos support
複数のMongoインスタンスによる高可用性もサポートされている。mongoインスタンスに対する接続文字列を渡し、mongosオプションをtureにすればよい。
mongoose.connect('mongodb://mongosA:27501,mongosB:27501', { mongos: true }, cb);
Multiple connections
ここまででMongooseのデフォルト接続を用いたMongoDBへの接続の仕方を見てきた。時には、Mongoに対する複数の接続を開く事が必要になるだろうし、それぞれ異なったread/write設定や、もしかしたら例の様に異るデータベースかもしれない。こういう場合、これまでに語った引数をすべて受け付けるmongoose.createConnection()
が使用でき、新しい接続が返される。
var conn = mongoose.createConnection('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', options);
このconnectionオブジェクトは、この特定の接続に対するmodelsの作製と検証に使用れる。
Connection pools
各connectionは、mongoose.connect
やmongoose.createConnection
で作られ様が、内部で変更可能なコネクションプール(デフォルトでは5個)が返される。接続オプションでプールの個数を調整できます:
// シングルサーバ var uri = 'mongodb://localhost/test'; mongoose.createConnection(uri, { server: { poolSize: 4 }}); // replica setに対して mongoose.createConnection(uri, { replset: { poolSize: 4 }}); // URI上で渡されるオプションは、シングル、又はreplica setsと同じ様に働く var uri = 'mongodb://localhost/test?poolSize=4'; mongoose.createConnection(uri);
次は
ここまででconnectionsはカバーできた。我々の機能の一部を、再利用、共有できるプラグインに切り出す方法を見て行こう。