azure-cosmosdb - 使用 microsoft azure documentdb api 连接到 cosmos db 导致错误请求错误
问题描述
我正在尝试使用 azure-documentdb api 连接到 cosmosDb。 我附上的代码片段是上面添加的屏幕截图。
公共类 CosmosDBConnection {
private static final String HOST = "my-key";
private static final String MASTER_KEY = "master-key";
private static final String DATABASE_ID = "TablesDB";
private static DocumentClient documentClient = new
DocumentClient(HOST, MASTER_KEY,
ConnectionPolicy.GetDefault(), ConsistencyLevel.Session);
public static void main(String[] args) {
try {
DocumentClient documentClient = getDocumentClient();
String queryString = "SELECT * FROM root r r.id='" + DATABASE_ID+ "'";
FeedResponse feedResponse = documentClient.queryDatabases(queryString, null);
if(feedResponse != null){
List<Database> databaseList = feedResponse.getQueryIterable().toList();
System.out.println("At 19 line");
Database databaseCache = new Database();
if (databaseList.size() > 0) {
databaseCache = databaseList.get(0);
} else {
Database databaseDefinition = new Database();
databaseDefinition.setId(DATABASE_ID);
databaseCache = documentClient.createDatabase(databaseDefinition, null).getResource();
}
}else{
System.out.println("feedResponse is null");
}
} catch (DocumentClientException e) {
e.printStackTrace();
}
}
private static DocumentClient getDocumentClient() {
return documentClient;
}
}
导致错误的行是 -> documentClient.queryDatabases(queryString, null);
解决方案
该屏幕截图来自 Table API 帐户。您正在使用 SQL API SDK。
如果要使用 Table API 帐户,则需要使用Microsoft.Azure.Cosmos.Table SDK(对于 .NET,有其他语言的 SDK )。在该 SDK 中,您可以像这样创建表:
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(storageConnectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient(new TableClientConfiguration());
CloudTable table = tableClient.GetTableReference("order_details");
if (await table.CreateIfNotExistsAsync())
{
Console.WriteLine("Created Table named: order_details");
}
else
{
Console.WriteLine("Table order_details already exists");
}
如果您不需要使用 Tables API,您可以创建一个 SQL API 帐户并使用您已有的代码。
提取 BadRequest 响应的正文可能会向您显示该请求失败的原因,这可能表明您将 SQL API SDK 与 Tables API 帐户混合使用。
推荐阅读
- scala - 我需要在 Scala 中创建一个新的 DF 并附加我已经拥有的行。我该怎么做呢?
- sql - SQL Server 视图中导致重复
- jquery - 尽管数量已更改,但库存未更新
- npm - Yarn 不会使用指定的注册表
- node.js - NodeJS HTTP 请求队列
- python - 像第一次安装一样恢复 Anaconda
- javascript - Firebase 使用 ${res.user.uid} 而不是 userid 存储数据
- c - Makefile没有创建可执行文件
- java - 如何在相同(相同)负载平衡的 Spring 引导服务之间共享相同的 H2 内存数据库?
- node.js - 为什么我不能使用 express 来创建我的骨架文件夹结构