Какой лучший способ структурировать MongoClient и выразить: Клиент внутри маршрутов или маршруты внутри клиента? - PullRequest
0 голосов
/ 02 июля 2019

Какой лучший способ использовать MongoClient в Express?Клиент внутри маршрутов или маршруты внутри клиента?Я видел несколько учебных пособий по обоим, и теперь я в замешательстве, который является правильным, чтобы следовать?

app.get('/',(req,res)=>{
    MongoClient.connect('connection_str',(err,db)=>{
      err? console.log(`Error: ${err}`) :
      db.collection('collection_name',(err,docs)=>{
         err? console.log(`Error: ${err}`) :
         res.json(docs);
      });
    });
});

ИЛИ

MongoClient.connect('connection_str',(err,db)=>{
    app.get('/',(req,res)=>{
        db.collection('collection_name',(err,docs)=>{
           err? console.log(`Error: ${err}`) :
           res.json(docs);
        });
    });
});

Первыйкажется безопасным, но будет избыточным на разных маршрутах, в то время как второй идеален для разных маршрутов, я только начал изучать стек mern и хотел просто использовать собственный клиент mongo от mongodb вместо mongoose.Какой лучший подход, ребята?СПАСИБО!

1 Ответ

2 голосов
/ 02 июля 2019

Я бы не рекомендовал ни один из подходов, которые вы используете в настоящее время. Вместо этого я бы посоветовал вам создать соединение с базой данных один раз и повторно использовать это соединение для всех ваших маршрутов, или вы также можете использовать пул баз данных.

Из официальных документов:

Пул соединений - это кэш соединений с базой данных, поддерживаемый драйвер, так что соединения могут быть повторно использованы при новых подключениях к База данных не требуется. Чтобы уменьшить количество пулов соединений созданный вашим приложением, мы рекомендуем позвонить MongoClient.connect один раз и повторное использование переменной базы данных, возвращенной обратным вызовом:

Это пример, показывающий, как можно создать соединение один раз и повторно использовать соединение:

var MongoClient = require('mongodb').MongoClient;
var db;

// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, database) {
  if(err) throw err;

  db = database;

  // Start the application after the database connection is ready
  app.listen(3000);
  console.log("Listening on port 3000");
});

// Reuse database object in request handlers
app.get('/',(req,res)=>{
    db.collection('collection_name',(err,docs)=>{
        err ? console.log(`Error: ${err}`) :
           res.json(docs);
        });
    });
});

Для получения дополнительной информации, пожалуйста, прочитайте Официальную документацию на mongodb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...