编程语言
首页 > 编程语言> > java-Cosmosdb保存的数据无法在门户中找到,但可以从azure-documentdb-spring-boot-starter中找到

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

作者:互联网

我的项目使用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 Internal Server Error: Object reference not set to an instance of an object.” and exceptions:

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')]"
      }
    }
  ]
}

解决方法:

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

Microsoft’s Spring Boot Starter enables developers to use Spring Boot applications that easily integrate with Azure Cosmos DB by using DocumentDB APIs.

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帐户.

希望这可以帮助.

标签:azure,azure-cosmosdb,spring-boot,java
来源: https://codeday.me/bug/20191110/2014580.html