Мне интересно, какой самый эффективный способ вручную отменить выполняемый запрос с официальным клиентом node. В моем текущем коде я создаю новое соединение БД для каждого удаленного клиента, а затем просто закрываю эти соединения, если клиент рано отключается, что хорошо работает, но похоже, что это может быть расточительным способом делать вещи (редактирование: действительно это: подробнее здесь). Я предполагаю, что если можно напрямую получить доступ к пулу соединений клиента mongodb и закрыть конкретные соединения, а не целую базу данных, это может быть более эффективным?
Сервер mongo одновременно запрашивает несколько крупных геопространственных коллекций, поэтому выпуск ресурсов при отключении клиентов является важной частью производительности в этой реализации. Будут довольно ненужные запросы - люди любят много крутить на картах, даже когда вы их дросселируете.
Проницаемый пример моего текущего кода:
var MongoClient = require('mongodb').MongoClient,
express = require("express"),
app = express();
app.get('/my-route', function(request, response) {
MongoClient.connect(connectionUri, function(err, db) {
if (err) throw err;
request.on("close", function() {
db.close(true, function(err, res) {
if (err) throw err;
});
});
// make async DB queries as normal and send response when done
// ...
});
});