Когда речь заходит о том, как иметь дело с соединениями, есть несколько вариантов:
Single Connection
Самый простой вариант просто открыть одно соединение и использовать его через из вашего приложения , Это очень просто, но, вероятно, не работает для более крупных приложений, где вы можете выполнять множество запросов.
В 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();
});
});
Per Request Connection
Как уже отмечалось ранее, вы можете также открыть соединение каждого запроса, используйте эту связь во всем запросе, а затем закрыть его, когда запрос делается.
Пулы соединений
Наконец, вы можете также использовать пул соединений, если вы используете rethinkdbdash, который абстрагирует соединения для вас.
Лично я не против открытия и закрытия по каждому запросу. Но я очень привык к пулам соединений, и я читал, что это де-факто лучшая практика в том, как обращаться с db-соединениями. Я не эксперт Coffeescript, но как переменная 'conn' в вашем примере соединения доступна в функции использования? – Amberlamps
Он будет прикреплен к rethinkdb singleton ('r'). Вот почему, после подключения, я делаю 'r.conn = conn'. –
Вам нужно быть осторожным с этим, потому что вы не хотите запускать какие-либо запросы перед подключением. –