5.3.5 我的节点

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

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:当客户端关闭 aDBConnectionPool时,底层连接将保持打开这么多毫秒,以防另一个客户端尝试重用它。

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

  • ndb_session_pool_minDBSession:每个对象 的最小数量 NdbConnectionPool

  • ndb_session_pool_maxDBSession:每个对象 的最大数量 NdbConnectionPool

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

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

TableMapping(tableName);

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

连接到数据源并 Sessioncallback函数中获取一个。这相当于调用connect()(请参阅本节后面部分),然后调用 回调函数中返回的 getSession()SessionFactory

笔记

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

对象的实现成员 properties决定了 Session.

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

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

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

连接数据源获取 函数SessionFactory 中的一个。callback为了获得 a Session,您必须调用getSession()this SessionFactory,其实现由 properties对象的实现成员决定。

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

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

Array getOpenSessionFactories()

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

笔记

以下函数是公共 API 的一部分,但不适合应用程序使用。Mynode它们构成和 之间合同的一部分SessionFactory

  • Connection()

  • getConnectionKey()

  • getConnection()

  • newConnection()

  • deleteFactory()