node.js - nodejs + azure function apps - 处理数据库连接的最佳实践?

标签 node.js mongodb azure azure-functions azure-cosmosdb

如果这不是问这个问题的地方,请指点我到正确的论坛(提前道歉)。

我主要想知道是否在 nodejs 应用程序中实例化 全新 db 连接 在 azure 函数应用程序内 然后关闭每次功能应用程序退出时,都是一个坏主意。 (感觉是个坏主意)。

这是标准做法,还是有更好的方法在调用无服务器函数时保持连接处于事件状态?还是这无关紧要?

有问题的连接最多只能是 mongodb-native 驱动程序连接或 mongoose 连接与 cosmosdb 实例通信。

最佳答案

每次都创建新的数据库连接会导致性能下降。您可以添加指向数据库客户端的全局指针以保留连接。如下图所示:

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();     
    });
  }
};

关于node.js - nodejs + azure function apps - 处理数据库连接的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54792287/

相关文章:

node.js - "Error": "invalid input value for enum" only when using pg package in application to do INSERT SQL operation

mongodb - 将MongoDB与Docker结合使用时如何创建新的数据库和集合?

python-3.x - BlockBlobService 类位于 Python Azure 模块中的什么位置?

c# - 在 Azure 辅助角色中以不同的时间间隔执行任务

ios - 在 Xamarin 上推送通知的 Web API - 流程是什么?

javascript - NestJS:使用 JWT 向 AuthGuard 添加验证选项

javascript - express-jwt 中缺少 "admin"属性

sockets - 使用Node.js进行游戏配对时如何设计

java - MongoDB 作为 Flink 的数据源

mongodb - 如何启动 mongodb shell?