避免Oriento查询超时(OrientDB的node.js驱动程序)

鉴于下面的node.js + oriento示例代码,我有一个运行到超时的问题, [OrientDB.ConnectionError [2]: read ETIMEDOUT] ,第一次在长时间不活动期间后进行数据库查询。 超时错误后,连接以某种方式重新初始化,下一个查询运行良好。

 var oriento = require("oriento"), server = oriento({...}), db = server.use("users"); var getData = function(statement, opts, callback) { db.query(statement, opts).then(function(data) { callback(null, data); }).catch(callback); }; 

所以我有以下问题:

  1. 这是正确的方法,或者我应该调用oriento({...}).use("users")每次我做一个查询,而不是重用连接对象?
  2. 如果这是正确的方法,为什么连接不被validation和自动刷新?
  3. 我怎么手动检查,我不会进入超时(即validation连接),并强制连接刷新?

任何build议比以下相当丑陋的黑客通过每分钟ping数据库来保持传输套接字?

 setInterval(function(db) { db.query("select from user").then(function(data) { console.log("still alive"); }).catch(function(err) { console.error(err); }); }, 60000, db);