如何处理HTTP请求的数据库连接?

时间:2015-07-16 14:03:51

标签: rethinkdb

我是否在每个HTTP请求上打开和关闭与RethinkDB服务器的连接?我正在读tutorial of the official examples。它描述了一个Express应用程序,它基本上看起来像:

var app = express();
app.use(openConnection);
app.use(/* do stuff */);
app.use(closeConnection);

这是最佳做法还是唯一的做法,因为没有本地连接池或其他方法?

1 个答案:

答案 0 :(得分:1)

谈到如何处理连接时,有几个选择:

单一连接

最简单的选择是打开一个连接并在整个应用中使用它。这非常简单,但可能不适用于您可能正在执行大量请求的大型应用程序。

在JavaScript中,连接可以附加到r对象并在整个应用程序中使用。

import r from 'rethinkdb';
import express from 'express';

let app = express();

r.connect().then((conn) => {
   r.conn = conn;
});

app.use('/table-list', (req, res) => {
  r.db('test').tableList().run(conn)
    .then((result) => {
      return res.json(result);    
    });
});

开放&关闭

您也可以在每次执行请求时打开和关闭连接。这种方法也很简单,但它有点冗长。

r.connect().then((conn) => 
  return r.db('test').tableList().run(conn)
    .then((result) => {
      console.log(result);    
      return result;
    })
    .then(() => {
      conn.close();
    });
});

按请求连接

如前所述,您还可以打开每个请求的连接,在整个请求中使用该连接,然后在请求完成时将其关闭。

连接池

最后,如果您使用rethinkdbdash,也可以使用连接池,它会为您抽象出连接。