一尘不染

Cosmosdb保存的数据无法在门户中找到,但可以从azure-documentdb-spring-boot-starter中找到

spring-boot

我的项目azure-documentdb-spring-boot-starter:0.2.0用于与cosmosdb进行交互:

@Repository
public interface PingEasyRepo extends DocumentDbRepository<PingEasy, String> {
}


@Document(collection = "test")
public class PingEasy {
    @Id
    private String id;
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

该代码运行,并且可以保存和findAll。但是,当我转到azure门户和cosmosdb数据浏览器时,数据没有出现。当我打开浏览器工具时,我看到失败的请求

“ 500内部服务器错误:对象引用未设置为对象的实例。” 和例外:

Uncaught TypeError: xhr.getResponseHeader is not a function
    at Object.DocumentClientFactory._shouldForceRetry (DocumentClientFactory.js?v=1.17.110.1:12)
    at HttpRequest.xhr.onreadystatechange (documentdbclient-1.14.0.js?v=1.17.110.1:3287)
    at HttpRequest._onAjaxError (Request.js?v=1.17.110.1:42)
    at i (jquery.min.js:2)
    at Object.fireWith [as rejectWith] (jquery.min.js:2)
    at y (jquery.min.js:4)
    at XMLHttpRequest.c (jquery.min.js:4)

以下是我用于自动创建cosmodb的脚本:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "databaseAccountName": {
      "type": "string",
      "metadata": {
        "description": "The MongoDB database account name. Needs to be globally unique."
      }
    }
  },
  "variables": {},
  "resources": [
    {
      "apiVersion": "2015-04-08",
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "kind": "MongoDB",
      "name": "[parameters('databaseAccountName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "databaseAccountOfferType": "Standard",
        "name": "[parameters('databaseAccountName')]"
      }
    }
  ]
}

阅读 353

收藏
2020-05-30

共1个答案

一尘不染

问题是,您要创建一个MongoDB帐户,并使用一个如您所链接的文章中所述的使用DocumentDB API写入数据的示例。

Microsoft的Spring Boot Starter使开发人员可以使用Spring Boot应用程序,该应用程序通过使用DocumentDB
API轻松与Azure Cosmos DB集成。

MongoDB帐户应与MongoDB客户端和应用程序一起使用,而不是与DocumentDB API客户端和应用程序一起使用。

主要区别在于MongoDB的必需标识符字段为“ _id”,而DocumentDB / SQL帐户的必需标识符为“
id”。当您通过MongoDB客户端(应用程序或使用其中一个MongoDB
SDK的代码)将文档写入MongoDB帐户时,驱动程序/客户端将确保您的文档具有必填的“ _id”字段或自动生成一个。并且,当您使用DocumentDB
API sdk / client和DocumentDB / SQL帐户时,sdk / client将自动生成所需的“ id”字段。

门户网站使用MongoDB客户端读取MongoDB帐户中的文档,但是由于它们不是有效的MongoDB文档(没有必需的标识符)而无法读取文档。如果您尝试使用自己编写的MongoDB应用程序读取文档,或者尝试使用Robomongo或Mongo
Chef等MongoDB客户端读取文档,则会遇到相同的错误。

在您的情况下,如果要使用Spring Boot示例,则需要创建一个DocumentDB /
SQL帐户。在本文的屏幕快照中,您可以看到如何创建一个SQL帐户。

希望这可以帮助。

2020-05-30