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