本教程将逐步介绍如何从 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(...);