我正在尝试将我的DocumentDB nuget包从1.13升级到1.18
我在升级具有DocumentClient绑定的azure函数时遇到问题。
在DocumentDB 1.13中,绑定部分不接受:{Id}作为绑定参数,并且完美地创建了DocumentClient对象。而DocumentDB 1.18需要{Id}作为绑定参数[我不想要,因为我想迭代集合中的整个文档]
我在1.18之前的host.json绑定是
{
"frameworks": {
"net46": {
"dependencies": {
"Dynamitey": "1.0.2",
"Microsoft.Azure.DocumentDB": "1.13.0",
"Microsoft.Azure.WebJobs.Extensions.DocumentDB": "1.0.0"
}
}
}
我的local.settings.json只有
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "
DefaultEndpointsProtocol=xxxxx/xxxxx==;EndpointSuffix=core.windows.net",
"AzureWebJobsDashboard": "",
"AzureWebJobsDocumentDBConnectionString":
"AccountEndpoint=xxxxx/;AccountKey=xxxx==;",
}
}
我的天蓝色功能看起来像
[FunctionName("DeleteAVFeedAuditData")]
public static async Task Run([TimerTrigger("0 0/1 * * * *")]TimerInfo myTimer, [DocumentDB]DocumentClient client,
TraceWriter log)
{
var c = client;
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
var value=ConfigurationManager.AppSettings["AVAuditFlushAfterDays"];
var collectionUri = UriFactory.CreateDocumentCollectionUri("AVFeedAudit", "AuditRecords");
//var documents = client.CreateDocumentQuery(collectionUri,"Select * from c where c.EndedAt");
//foreach (Document d in documents)
//{
// await client.DeleteDocumentAsync(d.SelfLink);
//}
}
}
现在,当使用更新的documentDB 1.18包运行azure函数时,它表示绑定{Id},它只给出具有指定id的单个文档。而我的要求与之前版本的DocumentDB 1.13相同。
请告诉我如何使用新的更新包将我的DocumentClient与整个文档绑定在一起。
答案 0 :(得分:0)
根据您的描述,我检查了这个问题,并将此问题转载如下:
请告诉我如何使用新的更新包将我的DocumentClient与整个文档绑定在一起。
根据您的方案,我建议您自己构建DocumentClient
,而不是使用绑定到DocumentClient
的解决方法来实现您的目的。
DocumentClient client = new DocumentClient(new Uri("https://<your-account-name>.documents.azure.com:443/"), "<your-account-key>");
您可以在serviceEndpoint
文件下配置accountKey
和local.settings.json
,就像应用设置AzureWebJobsStorage
一样。然后,您可以使用以下代码检索您的设置值:
ConfigurationManager.AppSettings["your-appsetting-key"];
此外,这里有关于从连接字符串构造DocumentClient
的{{3}},您可以参考它。
<强>更新强>
对于1.18,以下代码可以按预期工作:
[FunctionName("Function1")]
public static void Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, [DocumentDB("brucedb01", "brucecoll01",ConnectionStringSetting = "AzureWebJobsDocumentDBConnectionString")] IEnumerable<dynamic> documents, TraceWriter log)
{
foreach (JObject doc in documents)
{
//doc.SelectToken("_self").Value<string>();
log.Info(doc.ToString());
}
}