.leaseConnection()
同じ接続上で複数のクエリを実行するために、データストアから新しい接続をリースします(つまり、during
で提供されるロジックが DB 接続を再利用できるようにします)。
await datastore.leaseConnection(during);
または
var result = await datastore.leaseConnection(during);
引数 | 型 | 詳細 | |
---|---|---|---|
1 | during | 接続が取得され、準備ができたときにSailsが自動的に呼び出す手続き型パラメータ。これは、以下の「During」の使用法テーブルで指定された引数を受け取ります。 |
引数 | 型 | 詳細 | |
---|---|---|---|
1 | db | 新たにリースされたデータベース接続。(これの使い方は、.usingConnection() を参照してください。) |
Sails 1.1.0 より前のバージョンでは、
.leaseConnection()
の推奨される使い方は、「during」コードが終了時にコールバック(proceed
)を呼び出すことを期待していたことに注意してください。これは、「during」コードの関数シグネチャに2番目の引数を実際には含めない限り、もはや必要ありません。
型 | 詳細 |
---|---|
during から返されるオプションの結果データ。言い換えれば、during 関数で return 'foo'; を行った場合、これは 'foo' になります。 |
名前 | 型 | いつ? |
---|---|---|
UsageError | 無効なものが渡された場合にスローされます。 | |
AdapterError | データベースアダプタで問題が発生した場合にスローされます。 | |
Error | 予期しないことが発生した場合にスローされます。 |
SailsとWaterlineでのエラー処理の例については、概念 > モデルとORM > エラーを参照してください。
デフォルトのデータストアからデータベース接続をリースし、それを使用して2つのクエリを送信してから、プールに戻します。
var inventory = await sails.getDatastore()
.leaseConnection(async (db)=> {
var location = await Location.findOne({ id: inputs.locationId })
.usingConnection(db);
if (!location) {
let err = new Error('Cannot find location with that id (`'+inputs.locationId+'`)');
err.code = 'E_NO_SUCH_LOCATION';
throw err;
}
// Get all products at the location
var productOfferings = await ProductOffering.find({ location: inputs.locationId })
.populate('productType')
.usingConnection(db);
return productOfferings;
})
.intercept('E_NO_SUCH_LOCATION', 'notFound');
// All done! Whatever we were doing with that database connection worked.
// Now we can proceed with our business.
res
)