Sailsは、MongoDBデータベースをsails-mongoアダプターを介してサポートしています。
まず、開発マシンまたはクラウドで実行中のMongoDBサーバーにアクセスできることを確認してください。以下では、'mongodb://root@localhost/foo'は、データベース名として「foo」を使用するローカルにインストールされたMongoDBを指します。その接続URLをデータベースに適切な文字列に置き換えてください。
開発中にNode.js/SailsアプリケーションでMongoDBを使用するには
npm install sails-mongo
を実行します。config/datastores.js
ファイルで、default
データストア設定を編集します。
default: {
adapter: 'sails-mongo',
url: 'mongodb://root@localhost/foo'
}
config/models.js
ファイルで、デフォルトのid
属性を編集して、MongoDBのプライマリキーに適切なtype
とcolumnName
を設定します。
attributes: {
id: { type: 'string', columnName: '_id' },
//…
}
これで完了です! アプリケーションを再び起動すれば、準備完了です。
プロジェクトをMongoDBを使用するように設定した後、Waterlineのクエリがデフォルトで大文字と小文字を区別するようになったことに気付くかもしれません。大文字と小文字を区別しないクエリを実行するには、.meta({makeLikeModifierCaseInsensitive: true})
を使用できます。
本番環境でMongoDBを使用するには、config/env/production.js
のアダプター設定を編集します。
adapter: 'sails-mongo',
接続URLも設定できますが、多くの開発者は機密性の高い認証情報をバージョン管理にチェックインしないことを好みます。別のオプションは、環境変数を使用することです。
sails_datastores__default__url=mongodb://heroku_12345678:[email protected]:29017/heroku_12345678
ステージング環境でMongoDBを使用するには、
config/env/staging.js
を編集します。アプリケーションによっては、ステージングデータベースの認証情報はセキュリティリスクが低いため、バージョン管理にチェックインすることが許容される場合があります。
すべてのSailsデータベースアダプターと同様に、sails-mongo
を使用する場合、Waterlineモデルメソッドを使用してモデルを操作できます。
多くのアプリケーションでは、それがすべてです。「hello world」から本番環境まで。制限に遭遇した場合でも、通常はMongo固有のコードを記述することなく回避できます。ただし、代替手段がない場合は、SailsアプリケーションでMongoドライバーを直接使用することが可能です。
低レベルの「ネイティブ」MongoDBクライアントに直接アクセスするには、データストアインスタンスの.manager
プロパティを使用します。
sails-mongo
v2.0.0以降、manager.client
を介してMongoClient
オブジェクトにアクセスできます。これにより、ClientSession
などの最新のMongoDBの改善点や、トランザクション、変更ストリーム、その他の新しい機能にアクセスできます。
var mongoClient = Pet.getDatastore().manager.client;
var results = await mongoClient.db('test')
.collection('pet')
.find({}, { name: 1 })
.toArray();
console.log(results);
ネイティブMongoDBクライアントで使用可能なメソッドの完全なリストについては、Node.js MongoDBドライバーAPIリファレンスを参照してください。