gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:28 24 4
gpt4 key购买 nike

我的项目正在使用 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;
}
}

代码运行并可以执行 save 和 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/客户端和 DocumentDB/SQL 帐户时,sdk/客户端将自动生成所需的“id”字段。

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

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

希望这有帮助。

关于java - Cosmosdb 保存的数据无法在门户中找到,而是从 azure-documentdb-spring-boot-starter 中找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com