Azure Cosmos DB-bindingen voor Azure Functions 1.x
Belangrijk
De ondersteuning wordt beëindigd voor versie 1.x van de Azure Functions-runtime op 14 september 2026. We raden u ten zeerste aan uw apps te migreren naar versie 4.x voor volledige ondersteuning.
In dit artikel wordt uitgelegd hoe u kunt werken met Azure Cosmos DB-bindingen in Azure Functions. Azure Functions ondersteunt trigger-, invoer- en uitvoerbindingen voor Azure Cosmos DB.
Notitie
Dit artikel is bedoeld voor Azure Functions 1.x. Zie Azure Cosmos DB-bindingen voor Azure Functions 2.x en hoger voor informatie over het gebruik van deze bindingen in Functions 2.x.
Deze binding heette oorspronkelijk DocumentDB. In Azure Functions versie 1.x is alleen de naam van de trigger gewijzigd in Azure Cosmos DB; de invoerbinding, uitvoerbinding en het NuGet-pakket behouden de DocumentDB-naam.
Notitie
Azure Cosmos DB-bindingen worden alleen ondersteund voor gebruik met de SQL-API. Voor alle andere Azure Cosmos DB-API's hebt u toegang tot de database vanuit uw functie met behulp van de statische client voor uw API, waaronder Azure Cosmos DB voor MongoDB, Azure Cosmos DB voor Apache Cassandra, Azure Cosmos DB voor Apache Gremlin en Azure Cosmos DB for Table.
Pakketten - Functions 1.x
De Azure Cosmos DB-bindingen voor Functions versie 1.x zijn beschikbaar in het NuGet-pakket Microsoft.Azure.WebJobs.Extensions.DocumentDB , versie 1.x. De broncode voor de bindingen bevindt zich in de GitHub-opslagplaats azure-webjobs-sdk-extensions .
De volgende tabel bevat informatie over het toevoegen van ondersteuning voor uitvoerbinding in elke ontwikkelomgeving.
Ontwikkelomgeving | Ondersteuning toevoegen in Functions 1.x |
---|---|
Lokale ontwikkeling: C#-klassebibliotheek | Het pakket installeren |
Lokale ontwikkeling: C#-script, JavaScript, F# | Automatisch |
Portal-ontwikkeling | Automatisch |
Activator
De Azure Cosmos DB-trigger maakt gebruik van de Wijzigingenfeed van Azure Cosmos DB om te luisteren naar invoegingen en updates tussen partities. De wijzigingenfeed publiceert invoegingen en updates, niet verwijderingen.
Trigger - voorbeeld
In het volgende voorbeeld ziet u een in-process C#-functie die wordt aangeroepen wanneer de opgegeven database en verzameling worden ingevoegd of bijgewerkt.
using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
namespace CosmosDBSamplesV1
{
public static class CosmosTrigger
{
[FunctionName("CosmosTrigger")]
public static void Run([CosmosDBTrigger(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
LeaseCollectionName = "leases",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
TraceWriter log)
{
if (documents != null && documents.Count > 0)
{
log.Info($"Documents modified: {documents.Count}");
log.Info($"First document Id: {documents[0].Id}");
}
}
}
}
Trigger - kenmerken
Gebruik het cosmosDBTrigger-kenmerk voor C#-klassenbibliotheken in proces.
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Trigger - configuratie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een CosmosDBTrigger
kenmerkvoorbeeld in een methodehandtekening:
[FunctionName("DocumentUpdates")]
public static void Run(
[CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
IReadOnlyList<Document> documents,
TraceWriter log)
{
...
}
Zie Trigger: C#-voorbeeldvoor een volledig voorbeeld.
Trigger - configuratie
De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk CosmosDBTrigger
.
function.json-eigenschap | Kenmerkeigenschap | Beschrijving |
---|---|---|
type | n.v.t. | Moet worden ingesteld op cosmosDBTrigger . |
direction | n.v.t. | Moet worden ingesteld op in . Deze parameter wordt automatisch ingesteld wanneer u de trigger maakt in Azure Portal. |
name | n.v.t. | De naam van de variabele die wordt gebruikt in functiecode die de lijst met documenten met wijzigingen vertegenwoordigt. |
connectionStringSetting | ConnectionStringSetting | De naam van een app-instelling die de verbindingsreeks gebruikt om verbinding te maken met het Azure Cosmos DB-account dat wordt bewaakt. |
databaseName | DatabaseName | De naam van de Azure Cosmos DB-database met de verzameling die wordt bewaakt. |
collectionName | CollectionName | De naam van de verzameling die wordt bewaakt. |
leaseConnectionStringSetting | LeaseConnectionStringSetting | (Optioneel) De naam van een app-instelling die de verbindingsreeks bevat voor de service die de leaseverzameling bevat. Wanneer deze niet is ingesteld, wordt de connectionStringSetting waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De verbindingsreeks voor de leaseverzameling moet schrijfmachtigingen hebben. |
leaseDatabaseName | LeaseDatabaseName | (Optioneel) De naam van de database met de verzameling die wordt gebruikt voor het opslaan van leases. Als deze instelling niet is ingesteld, wordt de waarde van de databaseName instelling gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. |
leaseCollectionName | LeaseCollectionName | (Optioneel) De naam van de verzameling die wordt gebruikt voor het opslaan van leases. Wanneer deze niet is ingesteld, wordt de waarde leases gebruikt. |
createLeaseCollectionIfNotExists | CreateLeaseCollectionIfNotExists | (Optioneel) Wanneer deze optie is ingesteld true , wordt de verzameling leases automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false . |
leasesCollectionThroughput | LeasesCollectionThroughput | (Optioneel) Definieert het aantal aanvraageenheden dat moet worden toegewezen wanneer de leaseverzameling wordt gemaakt. Deze instelling wordt alleen gebruikt wanneer createLeaseCollectionIfNotExists is ingesteld op true . Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt met behulp van de portal. |
leaseCollectionPrefix | LeaseCollectionPrefix | (Optioneel) Wanneer dit is ingesteld, wordt er een voorvoegsel toegevoegd aan de leases die zijn gemaakt in de leaseverzameling voor deze functie, waardoor twee afzonderlijke Azure Functions dezelfde leaseverzameling kunnen delen met behulp van verschillende voorvoegsels. |
feedPollDelay | FeedPollDelay | (Optioneel) Wanneer deze instelling is ingesteld, definieert deze, in milliseconden, de vertraging tussen het peilen van een partitie voor nieuwe wijzigingen in de feed, nadat alle huidige wijzigingen zijn verwijderd. De standaardwaarde is 5000 (5 seconden). |
leaseAcquireInterval | LeaseAcquireInterval | (Optioneel) Wanneer deze optie is ingesteld, definieert deze, in milliseconden, het interval voor het starten van een taak om te berekenen of partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden). |
leaseExpirationInterval | LeaseExpirationInterval | (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het interval waarvoor de lease wordt genomen in een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt vernieuwd, wordt deze verlopen en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden). |
leaseRenewInterval | LeaseRenewInterval | (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het vernieuwingsinterval voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden). |
controlepuntFrequency | CheckpointFrequency | (Optioneel) Wanneer deze is ingesteld, wordt het interval tussen leasecontrolepunten in milliseconden gedefinieerd. De standaardwaarde is altijd na elke functieaanroep. |
maxItemsPerInvocation | MaxItemsPerInvocation | (Optioneel) Wanneer deze functie is ingesteld, wordt de maximale hoeveelheid items aangepast die per functie-aanroep worden ontvangen. |
startFromBeginning | StartFromBeginning | (Optioneel) Wanneer deze optie is ingesteld, wordt de trigger gevraagd om wijzigingen te lezen vanaf het begin van de geschiedenis van de verzameling in plaats van de huidige tijd. Dit werkt alleen wanneer de trigger voor het eerst wordt gestart, zoals in volgende uitvoeringen, de controlepunten al zijn opgeslagen. Dit instellen op true wanneer er al leases zijn gemaakt, heeft geen effect. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.
Trigger - gebruik
Voor de trigger is een tweede verzameling vereist die wordt gebruikt voor het opslaan van leases via de partities. Zowel de verzameling die wordt bewaakt als de verzameling die de leases bevat, moet beschikbaar zijn om de trigger te laten werken.
Belangrijk
Als meerdere functies zijn geconfigureerd voor het gebruik van een Azure Cosmos DB-trigger voor dezelfde verzameling, moet elk van de functies een toegewezen leaseverzameling gebruiken of een andere LeaseCollectionPrefix
opgeven voor elke functie. Anders wordt slechts één van de functies geactiveerd. Zie de sectie Configuratie voor meer informatie over het voorvoegsel.
De trigger geeft niet aan of een document is bijgewerkt of ingevoegd, maar alleen het document zelf. Als u updates en invoegingen anders moet afhandelen, kunt u dit doen door tijdstempelvelden te implementeren voor invoeging of bijwerken.
Invoer
Bij een Azure Cosmos DB-invoerbinding wordt de SQL-API gebruikt voor het ophalen van een of meer Azure Cosmos DB-documenten en het doorgeven daarvan aan de invoerparameter van de functie. De document-ID of queryparameters kunnen worden bepaald op basis van de trigger die de functie activeert.
Invoer - voorbeeld
Deze sectie bevat de volgende voorbeelden:
- Wachtrijtrigger, id opzoeken vanuit JSON
- HTTP-trigger, id opzoeken uit querytekenreeks
- HTTP-trigger, id opzoeken uit routegegevens
- HTTP-trigger, id opzoeken uit routegegevens, met behulp van SqlQuery
- HTTP-trigger, meerdere documenten ophalen met behulp van SqlQuery
- HTTP-trigger, meerdere documenten ophalen met Behulp van DocumentClient
De voorbeelden verwijzen naar een eenvoudig ToDoItem
type:
namespace CosmosDBSamplesV1
{
public class ToDoItem
{
public string Id { get; set; }
public string Description { get; set; }
}
}
Wachtrijtrigger, id opzoeken vanuit JSON
In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een wachtrijbericht dat een JSON-object bevat. De wachtrijtrigger parseert de JSON in een object met de naam ToDoItemLookup
, dat de id bevat die moet worden opgezocht. Deze id wordt gebruikt om een ToDoItem
document op te halen uit de opgegeven database en verzameling.
namespace CosmosDBSamplesV1
{
public class ToDoItemLookup
{
public string ToDoItemId { get; set; }
}
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace CosmosDBSamplesV1
{
public static class DocByIdFromJSON
{
[FunctionName("DocByIdFromJSON")]
public static void Run(
[QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
Id = "{ToDoItemId}")]ToDoItem toDoItem,
TraceWriter log)
{
log.Info($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId}");
if (toDoItem == null)
{
log.Info($"ToDo item not found");
}
else
{
log.Info($"Found ToDo item, Description={toDoItem.Description}");
}
}
}
}
HTTP-trigger, id opzoeken uit querytekenreeks
In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag waarin een querytekenreeks wordt gebruikt om de id op te zoeken. Deze id wordt gebruikt om een ToDoItem
document op te halen uit de opgegeven database en verzameling.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;
namespace CosmosDBSamplesV1
{
public static class DocByIdFromQueryString
{
[FunctionName("DocByIdFromQueryString")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
Id = "{Query.id}")] ToDoItem toDoItem,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
if (toDoItem == null)
{
log.Info($"ToDo item not found");
}
else
{
log.Info($"Found ToDo item, Description={toDoItem.Description}");
}
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
HTTP-trigger, id opzoeken uit routegegevens
In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de id op te geven die moet worden opgezoekd. Deze id wordt gebruikt om een ToDoItem
document op te halen uit de opgegeven database en verzameling.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;
namespace CosmosDBSamplesV1
{
public static class DocByIdFromRouteData
{
[FunctionName("DocByIdFromRouteData")]
public static HttpResponseMessage Run(
[HttpTrigger(
AuthorizationLevel.Anonymous, "get", "post",
Route = "todoitems/{id}")]HttpRequestMessage req,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
Id = "{id}")] ToDoItem toDoItem,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
if (toDoItem == null)
{
log.Info($"ToDo item not found");
}
else
{
log.Info($"Found ToDo item, Description={toDoItem.Description}");
}
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
HTTP-trigger, id opzoeken uit routegegevens, met behulp van SqlQuery
In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de id op te geven die moet worden opgezoekd. Deze id wordt gebruikt om een ToDoItem
document op te halen uit de opgegeven database en verzameling.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
namespace CosmosDBSamplesV1
{
public static class DocByIdFromRouteDataUsingSqlQuery
{
[FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
Route = "todoitems2/{id}")]HttpRequestMessage req,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
SqlQuery = "select * from ToDoItems r where r.id = {id}")] IEnumerable<ToDoItem> toDoItems,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
foreach (ToDoItem toDoItem in toDoItems)
{
log.Info(toDoItem.Description);
}
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
HTTP-trigger, meerdere documenten ophalen met behulp van SqlQuery
In het volgende voorbeeld ziet u een C#-functie waarmee een lijst met documenten wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag. De query wordt opgegeven in de SqlQuery
kenmerkeigenschap.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
namespace CosmosDBSamplesV1
{
public static class DocsBySqlQuery
{
[FunctionName("DocsBySqlQuery")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequestMessage req,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection",
SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
IEnumerable<ToDoItem> toDoItems,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
foreach (ToDoItem toDoItem in toDoItems)
{
log.Info(toDoItem.Description);
}
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
HTTP-trigger, meerdere documenten ophalen met Behulp van DocumentClient (C#)
In het volgende voorbeeld ziet u een C#-functie waarmee een lijst met documenten wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag. De code maakt gebruik van een DocumentClient
exemplaar dat wordt geleverd door de Azure Cosmos DB-binding om een lijst met documenten te lezen. Het DocumentClient
exemplaar kan ook worden gebruikt voor schrijfbewerkingen.
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
namespace CosmosDBSamplesV1
{
public static class DocsByUsingDocumentClient
{
[FunctionName("DocsByUsingDocumentClient")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
string searchterm = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
.Value;
if (searchterm == null)
{
return req.CreateResponse(HttpStatusCode.NotFound);
}
log.Info($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
.Where(p => p.Description.Contains(searchterm))
.AsDocumentQuery();
while (query.HasMoreResults)
{
foreach (ToDoItem result in await query.ExecuteNextAsync())
{
log.Info(result.Description);
}
}
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
Invoer - kenmerken
Gebruik in proces C#-klassebibliotheken het kenmerk DocumentDB .
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie de volgende configuratiesectie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren.
Invoer - configuratie
De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk DocumentDB
.
function.json-eigenschap | Kenmerkeigenschap | Beschrijving |
---|---|---|
type | n.v.t. | Moet worden ingesteld op documentdb . |
direction | n.v.t. | Moet worden ingesteld op in . |
name | n.v.t. | Naam van de bindingsparameter die het document in de functie vertegenwoordigt. |
databaseName | DatabaseName | De database met het document. |
collectionName | CollectionName | De naam van de verzameling die het document bevat. |
id | Id | De id van het document dat moet worden opgehaald. Deze eigenschap ondersteunt bindingexpressies. Stel de id- en sqlQuery-eigenschappen niet in. Als u geen van beide instellingen instelt, wordt de hele verzameling opgehaald. |
sqlQuery | SqlQuery | Een Azure Cosmos DB SQL-query die wordt gebruikt voor het ophalen van meerdere documenten. De eigenschap ondersteunt runtimebindingen, zoals in dit voorbeeld: SELECT * FROM c where c.departmentId = {departmentId} . Stel de id- en sqlQuery-eigenschappen niet in. Als u geen van beide instellingen instelt, wordt de hele verzameling opgehaald. |
verbinding | ConnectionStringSetting | De naam van de app-instelling met uw Azure Cosmos DB-verbindingsreeks. |
partitionKey | PartitionKey | Hiermee geeft u de partitiesleutelwaarde voor de zoekactie. Kan bindingsparameters bevatten. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.
Invoer - gebruik
Wanneer de functie wordt afgesloten, worden eventuele wijzigingen in het invoerdocument via benoemde invoerparameters automatisch behouden.
Uitvoer
Met de Azure Cosmos DB-uitvoerbinding kunt u een nieuw document schrijven naar een Azure Cosmos DB-database met behulp van de SQL-API.
Uitvoer - voorbeeld
Deze sectie bevat de volgende voorbeelden:
- Wachtrijtrigger, één document schrijven
- Wachtrijtrigger, documenten schrijven met behulp van
IAsyncCollector
De voorbeelden verwijzen naar een eenvoudig ToDoItem
type:
namespace CosmosDBSamplesV1
{
public class ToDoItem
{
public string Id { get; set; }
public string Description { get; set; }
}
}
Wachtrijtrigger, één document schrijven
In het volgende voorbeeld ziet u een C#-functie waarmee een document wordt toegevoegd aan een database, met behulp van gegevens in het bericht uit Queue Storage.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;
namespace CosmosDBSamplesV1
{
public static class WriteOneDoc
{
[FunctionName("WriteOneDoc")]
public static void Run(
[QueueTrigger("todoqueueforwrite")] string queueMessage,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
TraceWriter log)
{
document = new { Description = queueMessage, id = Guid.NewGuid() };
log.Info($"C# Queue trigger function inserted one row");
log.Info($"Description={queueMessage}");
}
}
}
Wachtrijtrigger, documenten schrijven met behulp van IAsyncCollector
In het volgende voorbeeld ziet u een C#-functie waarmee een verzameling documenten aan een database wordt toegevoegd met behulp van gegevens die zijn opgegeven in een wachtrijbericht JSON.
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;
namespace CosmosDBSamplesV1
{
public static class WriteDocsIAsyncCollector
{
[FunctionName("WriteDocsIAsyncCollector")]
public static async Task Run(
[QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
[DocumentDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection")]
IAsyncCollector<ToDoItem> toDoItemsOut,
TraceWriter log)
{
log.Info($"C# Queue trigger function processed {toDoItemsIn?.Length} items");
foreach (ToDoItem toDoItem in toDoItemsIn)
{
log.Info($"Description={toDoItem.Description}");
await toDoItemsOut.AddAsync(toDoItem);
}
}
}
}
Uitvoer - kenmerken
Gebruik in proces C#-klassebibliotheken het kenmerk DocumentDB .
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Uitvoer - configuratie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een DocumentDB
kenmerkvoorbeeld in een methodehandtekening:
[FunctionName("QueueToDocDB")]
public static void Run(
[QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
[DocumentDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
{
...
}
Zie Uitvoer voor een volledig voorbeeld.
Uitvoer - configuratie
De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk DocumentDB
.
function.json-eigenschap | Kenmerkeigenschap | Beschrijving |
---|---|---|
type | n.v.t. | Moet worden ingesteld op documentdb . |
direction | n.v.t. | Moet worden ingesteld op out . |
name | n.v.t. | Naam van de bindingsparameter die het document in de functie vertegenwoordigt. |
databaseName | DatabaseName | De database met de verzameling waarin het document wordt gemaakt. |
collectionName | CollectionName | De naam van de verzameling waarin het document wordt gemaakt. |
createIfNotExists | CreateIfNotExists | Een Booleaanse waarde om aan te geven of de verzameling wordt gemaakt wanneer deze niet bestaat. De standaardwaarde is onwaar omdat nieuwe verzamelingen worden gemaakt met gereserveerde doorvoer, wat gevolgen heeft voor de kosten. Zie voor meer informatie de pagina met prijzen. |
partitionKey | PartitionKey | Wanneer CreateIfNotExists is waar, definieert u het partitiesleutelpad voor de gemaakte verzameling. |
collectionThroughput | CollectionThroughput | Wanneer CreateIfNotExists is waar, definieert u de doorvoer van de gemaakte verzameling. |
verbinding | ConnectionStringSetting | De naam van de app-instelling met uw Azure Cosmos DB-verbindingsreeks. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.
Uitvoer - gebruik
Wanneer u naar de uitvoerparameter in uw functie schrijft, wordt er standaard een document in uw database gemaakt. Dit document heeft een automatisch gegenereerde GUID als document-id. U kunt de document-id van het uitvoerdocument opgeven door de id
eigenschap op te geven in het JSON-object dat is doorgegeven aan de uitvoerparameter.
Notitie
Wanneer u de id van een bestaand document opgeeft, wordt het overschreven door het nieuwe uitvoerdocument.
Uitzonderingen en retourcodes
Binding | Verwijzing |
---|---|
Azure Cosmos DB | HTTP-statuscodes voor Azure Cosmos DB |