Я пытаюсь обновить документ в функциях Azure, когда документ CosmosDB вставлен / обновлен.
Однако, когда я обновляю документ внутри функции, функция запускается снова и вызывает бесконечный цикл.
private static DocumentClient _documentClient = new DocumentClient(new Uri(serviceEndpoint), key);
[FunctionName(nameof(MyFunction))]
public static async Task RunAsync([CosmosDBTrigger(
databaseName: "MyDatabase",
collectionName: "MyCollection",
ConnectionStringSetting = "MyDbConnectionString",
LeaseCollectionName = "leases",
CreateLeaseCollectionIfNotExists = true,
LeaseCollectionPrefix = nameof(MyFunction))]IReadOnlyList<Document> input,
ILogger log)
{
var replacementsTasks = new List<Task>();
foreach (var item in input)
{
item.SetPropertyValue("Updated", true);
replacementsTasks.Add(_documentClient.ReplaceDocumentAsync(item));
}
await Task.WhenAll(replacementsTasks);
}
Как я могу предотвратить это?Могу ли я использовать результат выхода CosmosDB с измененным документом из триггера?
Обновление 1
Я не хочу использовать другую коллекцию.Это удвоит цены на CosmosDB.Я попробовал следующее с входом и выходом CosmosDB.Однако я получаю тот же результат.Бесконечный цикл.
[FunctionName(nameof(DownloadImages))]
public static void Run(
[CosmosDBTrigger(
databaseName: database,
collectionName: collection,
ConnectionStringSetting = connectionStringName,
LeaseCollectionName = "leases",
CreateLeaseCollectionIfNotExists = true,
LeaseCollectionPrefix = nameof(MyFunction))]IReadOnlyList<Document> input,
[CosmosDB(database, collection, Id = "id", ConnectionStringSetting = connectionStringName)] out dynamic document,
ILogger log)
{
if(input.Count != 1) throw new ArgumentException();
document = input.Single();
document.myValue = true;
}