Azure Cosmos DB-bindingen voor Azure Functions 1.x
Belangrijk
De ondersteuning voor versie 1.x van de Azure Functions runtime eindigt 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 werkt 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 voor informatie over het gebruik van deze bindingen in Functions 2.x en hoger.
Deze binding heette oorspronkelijk DocumentDB. In Azure Functions versie 1.x is alleen de naam van de trigger gewijzigd in Azure Cosmos DB. De documentDB-naam wordt behouden door de invoerbinding, de uitvoerbinding en het NuGet-pakket.
Notitie
Azure Cosmos DB-bindingen worden alleen ondersteund voor gebruik met de SQL-API. Voor alle andere Azure Cosmos DB-API's moet u toegang krijgen 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 voor Table.
Pakketten - Functions 1.x
De Azure Cosmos DB-bindingen voor Functions versie 1.x zijn beschikbaar in het Microsoft.Azure.WebJobs.Extensions.DocumentDB NuGet-pakket, 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 deze binding 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 |
Trigger
De Azure Cosmos DB-trigger maakt gebruik van de Azure Cosmos DB-wijzigingenfeed 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 C#-functie die wordt aangeroepen wanneer er invoegingen of updates zijn in de opgegeven database en verzameling.
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 voor C#-klassebibliotheken in verwerking het kenmerk CosmosDBTrigger .
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Trigger - configuratie voor meer informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een voorbeeld van een CosmosDBTrigger
kenmerk 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 de 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 met de connection string die wordt gebruikt om verbinding te maken met het Azure Cosmos DB-account dat wordt bewaakt. |
databaseName | Databasenaam | 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 connection string naar de service die de leaseverzameling bevat. Wanneer dit niet is ingesteld, wordt de connectionStringSetting waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De connection string 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 dit 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 dit niet is ingesteld, wordt de waarde leases gebruikt. |
createLeaseCollectionIfNotExists | CreateLeaseCollectionIfNotExists | (Optioneel) Als deze optie is ingesteld op true , wordt de verzameling leases automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false . |
leasesCollectionThroughput | LeasesCollectionThroughput | (Optioneel) Hiermee definieert u 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 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 dit is ingesteld, wordt in milliseconden de vertraging tussen het pollen van een partitie voor nieuwe wijzigingen op de feed gedefinieerd, nadat alle huidige wijzigingen zijn leeggelopen. De standaardwaarde is 5000 (5 seconden). |
leaseAcquireInterval | LeaseAcquireInterval | (Optioneel) Wanneer dit is ingesteld, wordt in milliseconden het interval gedefinieerd voor het starten van een taak die moet worden berekend als partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden). |
leaseExpirationInterval | LeaseExpirationInterval | (Optioneel) Wanneer deze optie is ingesteld, wordt in milliseconden het interval gedefinieerd waarvoor de lease wordt opgenomen voor een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt verlengd, verloopt deze en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden). |
leaseRenewInterval | LeaseRenewInterval | (Optioneel) Wanneer deze optie is ingesteld, wordt in milliseconden het vernieuwingsinterval gedefinieerd voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden). |
checkpointFrequentie | CheckpointFrequency | (Optioneel) Wanneer dit is ingesteld, wordt in milliseconden het interval tussen leasecontrolepunten gedefinieerd. De standaardwaarde is altijd na elke functie-aanroep. |
maxItemsPerInvocation | MaxItemsPerInvocation | (Optioneel) Wanneer dit is ingesteld, wordt het maximum aantal items dat per functie-aanroep wordt ontvangen, aangepast. |
startFromBeginning | StartFromBeginning | (Optioneel) Wanneer deze optie is ingesteld, wordt aan de trigger aangegeven dat wijzigingen moeten worden gelezen 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, omdat 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 in het bestand local.settings.json in de Values
verzameling.
Trigger - gebruik
De trigger vereist een tweede verzameling die wordt gebruikt om leases over de partities op te slaan. De trigger werkt alleen als de verzameling die de leases bevat, zowel de verzameling die wordt bewaakt als de verzameling die de leases bevat.
Belangrijk
Als er 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 biedt alleen het document zelf. Als u updates en invoegingen anders wilt afhandelen, kunt u dit doen door tijdstempelvelden te implementeren voor invoeging of update.
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 waarmee de functie wordt geactiveerd.
Invoer - voorbeeld
Deze sectie bevat de volgende voorbeelden:
- Wachtrijtrigger, id opzoeken vanuit JSON
- HTTP-trigger, id opzoeken uit querytekenreeks
- HTTP-trigger, id opzoeken van routegegevens
- HTTP-trigger, id opzoeken van 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 van 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 opgezoekt. 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);
}
}
}
Voorbeelden van invoer overslaan
HTTP-trigger, id opzoeken van 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 opgezoekt. 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);
}
}
}
Voorbeelden van invoer overslaan
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);
}
}
}
Voorbeelden van invoer overslaan
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 van 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 C#-klassebibliotheken in proces het kenmerk DocumentDB .
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie de volgende configuratiesectie voor informatie over de 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 | Databasenaam | 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 niet zowel de eigenschappen id als sqlQuery in. Als u geen van beide 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 niet zowel de eigenschappen id als sqlQuery in. Als u geen van beide instelt, wordt de hele verzameling opgehaald. |
connection | ConnectionStringSetting | De naam van de app-instelling die uw Azure Cosmos DB-connection string bevat. |
partitionKey | PartitionKey | Hiermee geeft u de waarde van de partitiesleutel voor de zoekactie. Kan bindingsparameters bevatten. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het bestand local.settings.json in de Values
verzameling.
Invoer - gebruik
Wanneer de functie wordt afgesloten, worden wijzigingen die via benoemde invoerparameters in het invoerdocument zijn aangebracht, 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 die in het bericht van Queue Storage zijn opgegeven.
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 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 JSON-bericht in een wachtrij.
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 C#-klassebibliotheken in proces het kenmerk DocumentDB .
De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Uitvoer - configuratie voor meer informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een voorbeeld van een DocumentDB
kenmerk 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 | Databasenaam | 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 false omdat nieuwe verzamelingen worden gemaakt met gereserveerde doorvoer, wat gevolgen heeft voor de kosten. Zie de pagina prijzen voor meer informatie. |
partitionKey | PartitionKey | Wanneer CreateIfNotExists waar is, definieert u het partitiesleutelpad voor de gemaakte verzameling. |
collectionThroughput | CollectionThroughput | Wanneer CreateIfNotExists waar is, definieert de doorvoer van de gemaakte verzameling. |
connection | ConnectionStringSetting | De naam van de app-instelling die uw Azure Cosmos DB-connection string bevat. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het bestand local.settings.json in de Values
verzameling.
Uitvoer - gebruik
Wanneer u schrijft naar de uitvoerparameter in uw functie, wordt standaard een document gemaakt in uw database. 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 dit overschreven door het nieuwe uitvoerdocument.
Uitzonderingen en retourcodes
Binding | Referentie |
---|---|
Azure Cosmos DB | HTTP-statuscodes voor Azure Cosmos DB |