我是否在每个HTTP请求上打开和关闭与RethinkDB服务器的连接?我正在读tutorial of the official examples。它描述了一个Express应用程序,它基本上看起来像:
var app = express();
app.use(openConnection);
app.use(/* do stuff */);
app.use(closeConnection);
这是最佳做法还是唯一的做法,因为没有本地连接池或其他方法?
答案 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,也可以使用连接池,它会为您抽象出连接。