このチュートリアルでは、mysql
パッケージから生のMySQL接続インスタンスにアクセスする方法を説明します。これは、生のクライアントでのみ利用可能な低レベルAPIにアクセスする場合に役立ちます。
注:MySQLを使用する多くのNode.js / Sailsアプリケーションでは、ここで説明するような低レベルの使用は必要ありません。ORMの制限に遭遇した場合、通常は基になるデータベースのコードを記述する必要のない回避策があります。それでも、カスタムネイティブSQLクエリを使用するだけの場合、先に進む必要はありません。代わりに、
sendNativeQuery()
を参照してください。また、先に進む前に、機能するMySQLデータベースを使用するようにデータストアが構成されていることを確認してください。
MySQLパッケージからアクティブな接続を取得するには、登録済みデータストアオブジェクト(RDI)の.leaseConnection()
メソッドを呼び出すことができます。
// Get the named datastore
var rdi = sails.getDatastore('default');
// Get the datastore configured for a specific model
var rdi = Product.getDatastore();
leaseConnection()
メソッドを呼び出してアクティブな接続を取得するrdi.leaseConnection(function(connection, proceed) {
db.query('SELECT * from `user`;', function(err, results, fields) {
if (err) {
return proceed(err);
}
proceed(undefined, results);
});
}, function(err, results) {
// Handle results here after the connection has been closed
})
Sailsアプリで低レベルドライバとMySQLパッケージにアクセスするには、登録済みデータストアオブジェクト(RDI)からそれらを取得できます。
// Get the named datastore
var rdi = sails.getDatastore('default');
// Get the datastore configured for a specific model
var rdi = Product.getDatastore();
var mysql = rdi.driver.mysql;
// Get the named datastore
var rdi = sails.getDatastore('default');
// Grab the MySQL module from the datastore instance
var mysql = rdi.driver.mysql;
// Create a new connection
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'password',
database: 'example_database'
});
// Make a query and pipe the results
connection.query('SELECT * FROM posts')
.stream({highWaterMark: 5})
.pipe(...);