【发布时间】:2020-08-07 17:28:50
【问题描述】:
您能否创建一个 Mongoose 连接并将其与您的所有功能一起使用?
我正在使用 Azure Functions 创建一个无服务器 API,该 API 使用 Mongoose 连接到数据库。我正在尝试了解我的 API 和 Mongoose 连接之间的关系。
我之前的理解是每个函数都必须建立自己与数据库的连接。但是我注意到我的代码中有一些奇怪的行为。当我在一个函数中打开一个连接时,我可以在任何其他函数中访问该连接。这是预期的行为吗?示例:
功能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 中使用。如果这是预期的,在一个函数中建立连接并在我的所有 API 中使用它是好还是坏的做法?
【问题讨论】:
标签: node.js mongodb azure mongoose azure-functions