当前位置: 首页 > 知识库问答 >
问题:

Azure CosmosDB REST创建文档时出错

葛宏爽
2023-03-14

尝试使用REST API创建文档时,出现以下错误:

The input content is invalid because the required properties - 'id; ' - are missing

在各种SDK中,有一个可选参数要包含,disableAutomaticID生成,如果设置为true则如果未提供ID,将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己没有添加这个参数(我甚至不知道我会添加什么头——大概是头——因为RESTAPI的文档没有涵盖它)。

唯一需要注意的是,集合有一个定义的分区键。我找不到任何文档说如果定义了分区键就需要一个ID,但是情况似乎就是这样。

除非有人能回答为什么会发生这种情况,否则我将考虑我的“必须定义如果分区键定义”的答案。

下面的请求(不是裸HTTP,但那些是内容):

{
    "headers": {
        "content-type": "application/json",
        "x-ms-version": "2017-02-22",
        "x-ms-date": "Mon, 25 Mar 2019 17:57:03 GMT"
    },
    "body": {
        "data": "myData",
        // "id": "some_id" //I don't want to do this because I want Cosmos to auto-generate this like when I create a document in the Portal!
    },
    "method": "post",
    "url": "https://my-database-server.documents.azure.com/dbs/MyDatabase/colls/MyCollection/docs"
}

还有几个问题需要解决...

创建文档文档说明需要id,因此门户可能实际上是在浏览器端创建它,然后将其包含在请求中,但如果是这样,为什么SDK中存在disableAutomaticIdGeneration选项?

同样,同样的文件说明(突出显示是我的):

它是标识文档的唯一id,也就是说,没有两个文档应该共享同一个ID。id不得超过255个字符。在未指定ID值的情况下创建文档时,会自动添加ID字段。但是,您始终可以通过在请求正文中为ID值分配一个自定义值来更新它。

通过粗体部分,似乎需要键id,但也许我可以传递null或空字符串?但是,我尝试了这两种方法,两次都出现错误(一个说不允许null,另一个是字符串不能为空)。

共有1个答案

高祺
2023-03-14

当前SDK自动生成缺失的ids作为Guid值。Azure门户使用JS SDK,这就是为什么您会看到门户体验为您创建id如果您不添加它。

关于REST API的文档似乎有误导性,需要根据您分享的内容进行调整,因为REST API不会自动生成< code>id,但它会验证它是否在有效负载中。

总之,如果您正在实现自己的REST客户端,您可以在客户端添加自己的自动生成逻辑(就像SDK一样),REST API的必要条件是它包含在有效负载中。

 类似资料:
  • 创建 markdown 文档,文件名为 greeting.md,并将该文档放置于 docs 目录下。 website # 网站根目录 ├── docs │   └── greeting.md ├── src │   └── pages ├── docusaurus.config.js ├── ... 在文档顶部的 front matter 中设置 id 和 title 属性,以便

  • 我想创建一个Azure函数,它接受传递给它的JSON主体,并将该文档插入到Azure COSMOSDB实例中。 并按如下方式实现该函数: 在门户中,我放入了一个简单的示例文档:

  • 我正在使用PDFBox在循环中生成一堆发票。这通常是有效的,但不幸的是,我在循环中不时会遇到以下异常。为失败的发票再次启动生成一两次迟早会创建所有发票。 我已经研究了一些类似的问题,比如这里的PDFbox说PDDocument在未关闭时关闭,我只是认为它与垃圾收集器释放的对象有关,但我没有看到我的代码中的错误。 对于PDF本身的创建,我通常使用ApachePDFBox Cookbook的描述htt

  • 主要内容:在CouchDB数据库中使用Fauxton创建文档,CouchDB使用cURL实用程序创建文档在CouchDB中,数据库的数据以文档的形式而不是表格存储。 在CouchDB数据库中使用Fauxton创建文档 要在CouchDB数据库中创建文档,请打开Fauxton url: 选择特定的数据库,假设在数据库:上创建文档,先点击数据库链接进入数据概览。 点击新文档(New Document),如下图所示: 然后就会打开一个页面,默认只有一个字段:,但是可以通点击”Add Field“来新增

  • 这是一个最基本的 Docbook 文档 <?xml version='1.0' encoding="UTF-8"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5/zh_cn" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> “分子元素”一节中详细介绍

  • 主要内容:创建一个空的PDF文档,实例现在让我们了解如何使用PDFBox库创建PDF文档。 创建一个空的PDF文档 可以通过实例化类来创建一个空的PDF文档。使用这个类的方法将文档保存在所需的位置。 以下是创建一个空的PDF文档的步骤。 第1步: 创建空白文档 包中的类是PDF文档的内存中表示形式。 因此,通过实例化这个类,可以创建一个空的,如下面的代码块所示。 第2步: 保存文档 创建文档后,需要将此文档保存在所需的路径中,可以使用