Мне нужно написать функцию Azure, которая возвращает данные в базу данных Cosmos DB, используя версию 2 функций Azure.Тем не менее, мне трудно найти хорошие примеры того, как это сделать.Я могу найти очень простые примеры, которые включают поиск по идентификатору.
Я хочу иметь возможность отправить функции Azure некоторые поля для запроса.Такие, как «Likes» и «City» с разделом и вне раздела.Я хочу, чтобы он возвращал все записи в формате json.
Пример документа Cosmos DB Json.
{
"id": "46465464565455566546bddgd"
"Name": "Scott Smith"
"City": "Scottsdale"
"_pk": "56"
Мой код пока что
`
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;
пространство имен csharp {открытый статический класс GetData {
private static readonly string CosmosDbApiKey = Environment.GetEnvironmentVariable("CosmosDbApiKey");
private static readonly string CosmosDbUri = Environment.GetEnvironmentVariable("CosmosDbUri");
private static readonly DocumentClient DocumentClient = new DocumentClient(new Uri(CosmosDbUri), CosmosDbApiKey);
[FunctionName(nameof(GetData))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "api/data/getdata/{city}{likes},{_pk}")]HttpRequest req,
string city,
string likes,
string _pk,
TraceWriter log)
{
IActionResult result;
try
{
var Options = new RequestOptions() { PartitionKey = new PartitionKey(_pk) };
var Sql = "SELECT * FROM c" WHERE c.name={name};
var Uri = UriFactory.CreateDocumentCollectionUri("meddb", "medcol");
var documentUri = DocumentClient.CreateDocumentQuery(Uri, Sql, Options);
ResourceResponse<Document> document = await DocumentClient.ReadDocumentAsync(documentUri);
result = new OkObjectResult(
JsonConvert.SerializeObject(document.Resource, Formatting.Indented)
);
}
catch (Exception e)
{
log.Error(e.Message, e);
result = new BadRequestObjectResult(e);
}
return result;
}
}
}
`
Буду очень признателен за любую помощь!Где у меня возникли проблемы, это после раздела «Попробуйте».Или, если есть лучший способ сделать это, я тоже открыт!
Спасибо!