我在VS2017预览版中使用Azure功能项目的新工具,并将一些功能从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)
答案 0 :(得分:4)
是的,您可以使用应用设置的%%
自动解析语法为这些值使用应用设置。例如,如果您添加了名为DB_DEV
和COLLECTION_DEV
的应用设置(在门户网站中,或在本地方框中运行时),您可以在属性中引用这些设置,如下所示:
[DocumentDB("%DB_DEV%", "%COLLECTION_DEV%")]
然后将在运行时解析这些应用程序设置。我们的文档here中的“解析应用设置”部分更详细地解释了这一点。
答案 1 :(得分:1)
我忽略了可以通过我的Azure功能项目的local.settings.json
文件指定Azure Cosmos数据库连接字符串的事实。
在这里,我为我所针对的环境提供了适当的连接字符串。然后我可以在这些帐户中使用一致命名的数据库和集合,这意味着函数签名在所有环境中都是正确的。
[DocumentDB("my-db", "MyCollection")] IEnumerable<dynamic> inputDocuments
并在默认密钥local.settings.json
AzureWebJobsDocumentDBConnectionString
中提供连接字符串