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



给定以下node.js+oriento示例代码,在长时间不活动后第一次进行DB查询时,我遇到了超时[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. 如果这是正确的方式,为什么不自动验证和刷新连接
  3. 我如何手动检查我不会超时(即验证连接)并强制刷新连接

有什么比以下相当丑陋的破解更好的建议吗?通过每分钟ping DB来保持传输套接字?

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

相关内容

  • 没有找到相关文章

最新更新