我想创建一个Azure函数,它接受传递给它的JSON主体,并将该文档插入到Azure COSMOSDB实例中。
并按如下方式实现该函数:
#r "Newtonsoft.Json"
using Newtonsoft.Json.Linq;
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, object outputDocument)
{
var requestContent = await req.Content.ReadAsStringAsync();
log.Verbose($@"Received request:\n{requestContent}");
var newDoc = JObject.Parse(requestContent);
newDoc["Id"] = Guid.NewGuid().ToString();
newDoc["shardKey"] = newDoc.Value<string>(@"Id").Substring(8);
outputDocument = newDoc;
return req.CreateResponse(System.Net.HttpStatusCode.Created);
}
在门户中,我放入了一个简单的示例文档:
{
"prop1": 2,
"prop2": "2017-02-20",
}
{
"id": "145ee924-f824-4064-8364-f96dc12ab138",
"requestId": "5a27c287-2c91-40f5-be52-6a79c7c86bc2",
"statusCode": 500,
"errorCode": 0,
"message": "'UploadDocumentToCosmos' can't be invoked from Azure WebJobs SDK. Is it missing Azure WebJobs SDK attributes?"
}
对于异步函数,您应该使用IAsyncCollector
:
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req, TraceWriter log,
IAsyncCollector<object> outputDocuments)
{
...
await outputDocuments.AddAsync(newDoc);
}
尝试使用REST API创建文档时,出现以下错误: 在各种SDK中,有一个可选参数要包含,,如果设置为则如果未提供ID,将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己没有添加这个参数(我甚至不知道我会添加什么头——大概是头——因为RESTAPI的文档没有涵盖它)。 唯一需要注意的是,集合有一个定义的分区键。我找不到任何文档说如果定义了分区键就需要一个ID,但是情况似乎就是这
我们正在使用cosmosdb记录我们的应用程序日志。我们的日志有两层,一层有一般的信息,另一层有一般日志的更详细的信息。我们还在其他两个集合中记录了这些的副本以供备份。所以我们总共有四个系列。在我们的代码中,我们使用异步CreateDocumentAsync来创建这些日志。我们将任务存储在列表中,并使用Task.waitall来完成所有任务。在开发环境中,我们没有看到任何错误,但在生产中,当创建新
创建一个函数,但它给出的错误数据库表如下所示
我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。 主要功能定义如下: function.json输出绑定如下: 请注意,我使用和我的扩展手动安
你可以使用 str函数将Beautiful Soup文档(或者它的子集)转换为字符串, 或者使用它的code>prettify或renderContents。 你也可以使用unicode函数以Unicode字符串的形式获得。 prettify 方法添加了一些换行和空格以便让文档结构看起来更清晰。 它也将那些只包含空白符的,可能影响一个XML文档意义的文档节点(nodes)剔除(strips out
当我像这样创建时,它工作得很好: 但当我尝试发送消息创建if时,它会抛出一个异常: 发送功能: 函数有什么问题?