Показать сообщение отдельно
  #3 (permalink)  
Старый 19.11.2019, 21:41
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Ладно, в общем, расскажу кое-чего за эту тему. А чем ещё заняться безработному предпенсионеру?

Короче так. С тех пор, как появился пресловутый express.Router(), все уж и забыли, во-перввых, как просто делаются роутеры, и во-вторых, как работать с нативным драйвером mongodb.
Тут дело в чём? Вот к примеру, для Go кто-то написал, наконец-то, пакет context - и наступило счастье: там теперь появился сносный фреймвёрк go-chi/chi, сильно похожий (ну, насколько возможно) на ruby-rails или Express, появился пакет go-socket.io, прям юзающий стандартный модуль socket.io.js на клиенте, - в общем, кое-что появилось.

Но в Експрессе-то этот самый "контекст" был всегда. Только назывался он - app.locals.
Понятно, что коннект к базе - "дорогая" операция, поэтому мы хочим поключиться, держать открытым соединение и не париться. Делалось это так:
...
...
...
var MongoClient = require('mongodb').MongoClient;
...
app.get...

app.post...

app...

app...

...

MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
  if(err) console.log(err);
  app.locals.db = client.db('anybase');
  app.listen(3000, function() {
    console.log('3000');
  });
});

И вуаля!
Теперь все обработчики начинаются с магической строчки
var clientDB = app.locals.db;
clientDB.collection('blabla').find(...

Извените за внимание.

Последний раз редактировалось Audaxviator, 19.11.2019 в 21:49.
Ответить с цитированием