Можете ли вы создать одно соединение Mon goose и использовать его со всеми вашими функциями?
Я создаю бессерверный API с использованием Azure функций, которые подключаются к базе данных с помощью Mon goose. Я пытаюсь понять взаимосвязь между моим API и соединением Mon goose.
Мое предыдущее понимание заключалось в том, что каждая функция должна sh устанавливать свое собственное соединение с базой данных. Однако я замечаю странное поведение в своем коде. Когда я открываю соединение в одной функции, я могу получить доступ к этому соединению в любой другой функции. Это ожидаемое поведение? Пример:
Функция A
...
const mongoose = require('mongoose');
const User = require('../models/UserModel');
...
// Connect to database
mongoose.connect(process.env.CosmosDBConnectionString, {
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on('connected', () => {
console.log('Mongoose has connected.');
});
module.exports = async function (context, req) {
...
}
Функция B
const mongoose = require('mongoose');
const User = require('../models/UserModel');
module.exports = async function (context, req) {
if (mongoose.connection.readyState == 1) {
context.log("Mongoose is connected.");
// readyState == 1 indicates connection is open. This code runs.
}
await User.findOne({ email: req.query.email }).then(user => {
// I successfully retrieve user from the database
})
...
}
Обратите внимание, что соединение установлено в функции A но используется в функции B. Если это ожидается, было бы хорошей или плохой практикой установить sh соединение в одной функции и использовать его во всех моих API?