Azure功能-带Mongoose断开连接数据库的CosmosDB
我寻求您关于在Azure功能上开发应用程序的指导。我正在使用带有/enableMongoDBENdpoint的CosmosDB。我想知道,对于我的每个azure功能,我是否需要断开DB的连接? 下面是我在azure函数中使用Node.JS的代码示例:Azure功能-带Mongoose断开连接数据库的CosmosDB,mongoose,azure-functions,azure-cosmosdb,Mongoose,Azure Functions,Azure Cosmosdb,我寻求您关于在Azure功能上开发应用程序的指导。我正在使用带有/enableMongoDBENdpoint的CosmosDB。我想知道,对于我的每个azure功能,我是否需要断开DB的连接? 下面是我在azure函数中使用Node.JS的代码示例: const { connectDB, disconnectDB } = require('../config/db'); module.exports = async function (context, req) { t
const { connectDB, disconnectDB } = require('../config/db');
module.exports = async function (context, req) {
try {
const {
testData
} = req.body;
const addTestData = {
testData
};
//
//open MongoDB Connection, each azure function will call this function
//
connectDB();
/********************/
/*
## connectDB code commented for clarity ##
const connectDB = async () => {
try {
await mongoose.connect(db, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false
});
} catch (err) {
console.error(err.message);
//Exit process with failure
process.exit(1);
}
};
*/
/*********************/
//
// Remove code that do the usual DB add
//
//
// send success to clien
//
context.json.send({msg: 'Success'});
}
catch (err) {
context.res.status(500).send('Server Error' + err.message);
}
finally {
//do i need to disconnect the DB?
disconnectDB();
/**************************/
# Code for disconnectDB()
const disconnectDB = async () => {
try {
mongoose.connection.close();
console.log('Disconnect from DB');
}
catch (err) {
console.log(err);
}
};
*/
/***********************/
}
};
您是在Azure门户中开发解决方案还是在使用Visual Studio?Visual Studio是首选,但我将为您提供每个示例:
- 创建由Azure Cosmos DB()触发的函数
无服务器数据库计算
文档在这里非常有用,下面的Azure函数版本2.x文档也是如此()
- Azure函数和的Azure Cosmos DB绑定
谢谢你的回复。基本上我注意到我不应该关闭连接。
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace CosmosDBSamplesV2
{
public static class DocByIdFromQueryString
{
[FunctionName("DocByIdFromQueryString")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequest req,
[CosmosDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
Id = "{Query.id}",
PartitionKey = "{Query.partitionKey}")] ToDoItem toDoItem,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
if (toDoItem == null)
{
log.LogInformation($"ToDo item not found");
}
else
{
log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
}
return new OkResult();
}
}
}