Azure 函数绑定属性 - 数据库名称设置 - VS2017 预览工具

Azure Function binding attributes - Database name setting - VS2017 preview tooling

我在 VS2017 预览版中使用 Azure Functions 项目的新工具,并将一些功能从 Azure 门户移植到新项目。

我绑定到 Azure 文档数据库 - 它工作正常,但是当我使用 DocumentDB 属性时,我必须提供数据库名称作为第一个参数。

在我的例子中,它现在是 DEV 数据库 .. 但当然会有其他环境 - 有没有一种方法可以通过函数应用程序的应用程序设置来获取数据库名称?

[FunctionName("TimerTriggeredFunction")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, TraceWriter log,
                       [DocumentDB("my-db-DEV", "MyCollection")]  IEnumerable<dynamic> inputDocuments)

我忽略了一个事实,即可以通过我的 Azure 函数项目的 local.settings.json 文件指定 Azure Cosmos DB 连接字符串。

我会在此处为目标环境提供适当的连接字符串。然后我可以在这些帐户中使用一致命名的数据库和集合,这意味着函数签名在所有环境中都是正确的。

[DocumentDB("my-db", "MyCollection")] IEnumerable<dynamic> inputDocuments

并在默认键local.settings.json中提供连接字符串,AzureWebJobsDocumentDBConnectionString

是的,您可以使用应用程序设置的 %% 自动解析语法来为这些值使用应用程序设置。例如,如果您添加了名为 DB_DEVCOLLECTION_DEV 的应用程序设置(在门户中,或者当 运行 在您的本地框上时),您可以像这样在属性中引用这些设置:

[DocumentDB("%DB_DEV%", "%COLLECTION_DEV%")]

这些应用程序设置将在运行时解析。我们文档 here 中的 "Resolving App Settings" 部分对此进行了更详细的解释。