nodejs + приложения-функции Azure - лучший метод для обработки соединений с БД? - PullRequest
0 голосов
/ 20 февраля 2019

Пожалуйста, укажите мне на правильный форум, если это не место, чтобы спросить это (заранее извиняюсь).

Я в основном хочу знать, если в nodejs приложение, создание совершенно нового дБ соединения внутри приложения-функции Azure и последующее закрытие его при каждом выходе из приложения-функции - плохая идея.(кажется плохой идеей).

Это стандартная практика, или есть лучший способ сохранить соединение через вызовы бессерверных функций?Или это не имеет значения?

Рассматриваемое соединение в лучшем случае будет соединение драйвера mongodb-native или соединение mongoose для связи с экземпляром cosmosdb.

1 Ответ

0 голосов
/ 20 февраля 2019

Создание нового подключения к базе данных каждый раз может привести к снижению производительности.Вы можете добавить глобальный указатель на клиент базы данных, чтобы сохранить соединение.Что-то, как показано ниже:

const mongodb = require('mongodb');

const uri = 'mongodb+srv://XYZ/test';

let client = null;

module.exports = function (context, req) {
  context.log('Running');

  let hasClient = client != null;

  if (client == null) {
    mongodb.MongoClient.connect(uri, function(error, _client) {
      if (error) {
        context.log('Failed to connect');
        context.res = { status: 500, body: res.stack }
        return context.done();
      }
      client = _client;
      context.log('Connected');
      query();
    });
  } else {
    query();
  }

  function query() {
    client.db('test').collection('tests').find().toArray(function(error, docs) {
      if (error) {
        context.log('Error running query');
        context.res = { status: 500, body: res.stack }
        return context.done();
      }

      context.log('Success!');
      context.res = {
        headers: { 'Content-Type': 'application/json' },
        body: 'Document Length ' + docs.length + ', Connection reused ' + hasClient
      };
      context.done();     
    });
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...