gpt4 book ai didi

.net - Azure DocumentDB - 源自脚本的请求不能引用除提交客户端请求的分区键之外的分区键

转载 作者:行者123 更新时间:2023-12-04 18:37:57 25 4
gpt4 key购买 nike

使用 c# .Net 客户端 SDK,我调用 ExecuteStoredProcedureAsync 方法如下:

sproc_response = await client.ExecuteStoredProcedureAsync<Document>(sproc_uri, new RequestOptions { PartitionKey = new PartitionKey( my_partition_key) }, doc_to_create );

存储过程代码如下:
     sproc.Body = @"function( doc ) {

var collection = getContext().getCollection();

var response = getContext().getResponse();

function create_doc_callback( err, doc_created, options ) {

if(err) throw new Error('Error creating document: ' + err.message);

response.setBody( doc_created );

}

collection.createDocument( collection.getSelfLink(), doc, {}, create_doc_callback );

}";

这总是导致抛出以下异常:

创建文档时出错:来自脚本的请求不能引用除提交客户端请求的分区键之外的分区键。

是否有任何文档或示例清楚地显示了如何使用分区键调用存储过程——显然,我遗漏了一些东西!

最佳答案

在 Cosmos 中创建分区集合时,您需要选择一个分区键,该键是文档的 JSON 表示中的路径,用于将文档放置在正确的分区中。如果您试图插入一个没有分区键的文档,它将被分组到一个特殊的分区,用于没有分区键的文档。您指定存储过程应在给定分区的上下文中运行,但随后尝试使用它来将文档插入不同的分区(未定义的分区)。确保您的 POCO 上有一个属性,该属性映射到您为集合中的分区键选择的值。

当您在 RequestOptions 中为 PartitionKey 传递一个值时,您清楚地知道要将文档放入哪个分区。现在确保您的 POCO 在与您在创建集合时选择的分区键匹配的属性上包含此值。如果您不提供 ID,该文档仍将具有自动生成的 ID。或者,您可以在处理动态 JS 对象时将分区键添加到 Sproc 内的文档中。

doc.partitionKey = my_partition_key

关于.net - Azure DocumentDB - 源自脚本的请求不能引用除提交客户端请求的分区键之外的分区键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44830792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com