避免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); };
所以我有以下问题:
- 这是正确的方法,或者我应该调用
oriento({...}).use("users")
每次我做一个查询,而不是重用连接对象? - 如果这是正确的方法,为什么连接不被validation和自动刷新?
- 我怎么手动检查,我不会进入超时(即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);