我的项目azure-documentdb-spring-boot-starter:0.2.0用于与cosmosdb进行交互:
azure-documentdb-spring-boot-starter:0.2.0
@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')]" } } ] }
问题是,您要创建一个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帐户。
希望这可以帮助。