如何在本地运行的Azure函数中获取连接字符串环境变量?

时间:2017-07-12 10:36:09

标签: node.js azure azure-functions

我正在尝试将Azure功能设置为在我的开发环境中本地运行。我希望连接到MongoDb数据库实例。

在我添加的local.settings.json文件中:

"ConnectionStrings": {
    "DB_CONNECT_STRING": "mongodb://localhost:27017/MyDatabase"
}

在我的功能中,我有:

module.exports = function (context, myTimer) {
    console.log(process.env.DB_CONNECT_STRING);
    context.done();
};

process.env.DB_CONNECT_STRING未定义。

我假设我需要在环境变量中添加某种前缀,但我无法在任何地方找到这些内容。如何指定连接字符串并在功能代码中引用它?

2 个答案:

答案 0 :(得分:4)

马特梅森是对的。

在Node.js中,我们应该在Values集合中指定应用设置。然后,可以使用process.env将这些设置作为环境变量读取。

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "DB_CONNECT_STRING": "mongodb://localhost:27017/MyDatabase"
  }
}

enter image description here

然后使用process.env.DB_CONNECT_STRING获取值。

答案 1 :(得分:0)

对于那里的纯粹主义者,我找到了它。我设置了一个断点并评估了“process.env”并找到了这种格式的连接字符串:

ConnectionStrings:<ConnectionName>

enter image description here

所以如果我的 local.settings.json 看起来像这样:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
  },
  "Host": {
    "CORS": "http://localhost:8080"
  },
  "ConnectionStrings": {
    "Prod": "MyConnString"
  }
}

然后我会像这样访问它:

 const sqlConnString = process.env['ConnectionStrings:Prod'];

由于冒号,您必须使用括号表示法。