Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure功能-带Mongoose断开连接数据库的CosmosDB_Mongoose_Azure Functions_Azure Cosmosdb - Fatal编程技术网

Azure功能-带Mongoose断开连接数据库的CosmosDB

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

我寻求您关于在Azure功能上开发应用程序的指导。我正在使用带有/enableMongoDBENdpoint的CosmosDB。我想知道,对于我的每个azure功能,我是否需要断开DB的连接? 下面是我在azure函数中使用Node.JS的代码示例:

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 Cosmos DB中添加或更改数据时触发的函数。要了解有关Azure Cosmos DB的更多信息,请参阅

注意:使用Azure函数的
无服务器数据库计算
文档在这里非常有用,下面的Azure函数版本2.x文档也是如此()

  • Azure函数和的Azure Cosmos DB绑定
此参考适用于Azure功能版本2.x及更高版本。有关如何在函数1.x中使用这些绑定的信息,请参阅Azure函数1.x的Azure Cosmos DB绑定

此绑定最初命名为DocumentDB。在2.x及更高版本的函数中,触发器、绑定和包都命名为Cosmos DB

在2.x版Azure函数中,您不需要显式关闭连接。您只需调用结果。请参阅:


谢谢你的回复。基本上我注意到我不应该关闭连接。
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();
     }
  }
}