X DevAPI 用户指南  / 第 2 章连接和会话概念  /  2.1 数据库连接示例

2.1 数据库连接示例

连接到 MySQL 文档存储所需的代码看起来很像传统的 MySQL 连接代码,但现在应用程序可以与运行 X 插件的 MySQL 服务器实例建立逻辑会话。会话由 mysqlx工厂生产,返回的会话可以封装对一个或多个运行 X Plugin 的 MySQL 服务器实例的访问。默认情况下使用 Session 对象的应用程序可以部署在单服务器设置和数据库集群上,无需更改代码。

mysqlx.getSession(connection)使用该方法 创建 X DevAPI 会话 。您传入连接参数以连接到 MySQL 服务器,例如主机名和用户,这与经典 API 之一中的代码非常相似。连接参数可以指定为 URI 类型字符串,例如 user:@localhost:33060,或指定为数据字典,例如{user: myuser, password: mypassword, host: example.com, port: 33060}。有关详细信息,请参阅 使用类似 URI 的字符串或键值对连接到服务器

用于连接的 MySQL 用户帐户应使用mysql_native_passwordcaching_sha2_password身份验证插件,请参阅可插入身份验证。您要连接的服务器应该启用加密连接,这是 MySQL 8.0 中的默认设置。这确保客户端使用 X 协议PLAIN密码机制,该机制与使用任一身份验证插件的用户帐户一起使用。如果您尝试连接到未启用加密连接的服务器实例,对于使用 mysql_native_password插件身份验证MYSQL41的用户帐户,首先尝试使用,对于使用caching_sha2_password 身份验证的用户帐户,则回退到SHA256_MEMORY.

以下示例代码显示了如何连接到 MySQL 服务器并从my_collection 集合中获取字段name以 开头的文档L。该示例假定test存在名为的模式,并且 my_collection集合存在。要使示例正常运行,请替换user为您的用户名和password密码。如果您要连接到不同的主机或通过不同的端口,请将主机从 更改为 localhost,端口从 更改为33060

var mysqlx = require('mysqlx');

// Connect to server on localhost
var mySession = mysqlx.getSession( {
                host: 'localhost', port: 33060,
                user: 'user', password: 'password' } );

var myDb = mySession.getSchema('test');

// Use the collection 'my_collection'
var myColl = myDb.getCollection('my_collection');

// Specify which document to find with Collection.find() and
// fetch it from the database with .execute()
var myDocs = myColl.find('name like :param').limit(1).
        bind('param', 'L%').execute();

// Print document
print(myDocs.fetchOne());

mySession.close();