5.3.5 Mynode

此类用于生成和获取有关会话 (Session 对象) 的信息。要创建实例,请使用 Node.js require() 函数,并使用驱动程序名称,如下所示

var nosql = require("mysql-js");

ConnectionProperties 可用于检索或设置给定会话的连接属性。您可以使用 ConnectionProperties 构造函数获取给定适配器的默认连接属性的完整集合,如下所示,将适配器名称(字符串)用作 nameOrProperties 的值

ConnectionProperties(nameOrProperties);

您还可以通过向新的 ConnectionProperties 对象提供属性名称和值的列表,而不是适配器名称来创建自己的 ConnectionProperties 对象。然后,您可以使用此对象为新会话设置连接属性,如下所示

var NdbConnectionProperties = {
  "implementation" : "ndb",

  "ndb_connectstring" : "localhost:1186",
  "database"          : "test",
  "mysql_user"        : "root",

  "ndb_connect_retries" : 4,
  "ndb_connect_delay"   : 5,
  "ndb_connect_verbose" : 0,

  "linger_on_close_msec": 500,
  "use_ndb_async_api"   : false,

  "ndb_session_pool_min" : 4,
  "ndb_session_pool_max" : 100,
};

var sharePath = '/usr/local/mysql/share/nodejs';      // path to share/nodejs
var nosql = require(sharePath);
var dbProperties = nosql.ConnectionProperties(NdbConnectionProperties);

您还可以获取具有适配器默认连接属性的对象,然后更新其中一些属性,然后使用修改后的对象为会话设置连接属性,如下所示

var sharePath = '/usr/local/mysql/share/nodejs';      // path to share/nodejs
var spi   = require(sharePath + "/Adapter/impl/SPI"); // under share/nodejs

var serviceProvider         = spi.getDBServiceProvider('ndb');
var NdbConnectionProperties = serviceProvider.getDefaultConnectionProperties();

NdbConnectionProperties.mysql_user = 'nodejs_user';
NdbConnectionProperties.database   = 'my_nodejs_db';

var dbProperties = nosql.ConnectionProperties(NdbConnectionProperties);

ConnectionProperties 对象包含以下属性

  • implementation: 对于使用 NDB Cluster 的 Node.js 应用程序,这始终是 ndb.

  • ndb_connectstring: 用于连接到管理服务器的 NDB Cluster 连接字符串。

  • database: 要使用的 MySQL 数据库的名称。

  • mysql_user: MySQL 用户名。

  • ndb_connect_retries: 在超时前重试失败连接的次数;使用小于 0 的数字来持续重试连接,永不停止。

  • ndb_connect_delay: 连接重试之间的间隔(以秒为单位)。

  • ndb_connect_verbose: 1 或 0;1 启用连接期间的额外控制台输出。

  • linger_on_close_msec: 当客户端关闭 DBConnectionPool 时,底层连接将保持打开状态,持续时间为这些毫秒,以防其他客户端尝试重用它。

  • use_ndb_async_api: 如果为 true,则使用异步调用执行某些操作以提高并发性。如果为 false,则在传输中的操作数量限制为每个工作线程一个。

  • ndb_session_pool_min: 每个 NdbConnectionPoolDBSession 对象的最小数量。

  • ndb_session_pool_max: 每个 NdbConnectionPoolDBSession 对象的最大数量。

    每个 NdbConnectionPool 都维护一个 DBSession 对象池,以及它们的底层 Ndb 对象。此参数与 ndb_session_pool_min 一起为该池的大小设置指导原则。

TableMapping 构造函数也可以作为顶级函数使用。您可以通过名称获取映射,或者使用现有映射

TableMapping(tableName);

TableMapping(tableMapping);
openSession(properties, mappings, Function(err, Session) callback);

连接到数据源并在 callback 函数中获取 Session。这等效于调用 connect()(参见本节后面部分),然后在回调函数中返回的 SessionFactory 上调用 getSession()

注意

执行此方法可能会导致连接到网络上的许多其他节点,等待它们准备好,并向它们发出多个请求。出于此原因,您应避免不必要地打开新会话。

properties 对象的 implementation 成员确定 Session 的实现。

如果 mappings 未定义、为 null 或为空数组,则不会加载或验证任何映射。在这种情况下,任何所需的映射将在执行期间根据需要加载和验证。如果 mappings 包含字符串或构造函数,则表的元数据(或映射的表)将从数据库中加载,并根据映射的要求进行验证。

可以将多个表和构造函数作为数组中的元素传递给 openSession()

connect(properties, mappings, Function(err, SessionFactory) callback);

连接到数据源以在 callback 函数中获取 SessionFactory。为了获取 Session,您必须在此 SessionFactory 上调用 getSession(),其实现由 properties 对象的 implementation 成员决定。

如果 mappings 未定义、为 null 或为空数组,则不会加载或验证任何映射。在这种情况下,任何所需的映射将根据需要加载和验证。如果 mappings 包含字符串或构造函数,则表的元数据(或映射的表)将从数据库中加载,并根据映射的要求进行验证。

可以将多个表和构造函数作为数组中的元素传递。

Array getOpenSessionFactories()

获取由该模块创建的所有 SessionFactory 对象的数组。

注意

以下函数是公共 API 的一部分,但并非专为应用程序使用而设计。它们构成了 MynodeSessionFactory 之间契约的一部分。

  • Connection()

  • getConnectionKey()

  • getConnection()

  • newConnection()

  • deleteFactory()