使用 microsoft azure documentdb api 连接到 cosmos db 导致错误请求错误
Connection to cosmos db using microsoft azure documentdb api results in bad request error
我正在尝试使用 azure-documentdb api 连接到 cosmosDb。
我附加的代码片段是 w.r.t。上面添加的屏幕截图。
public class 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 (for .NET, there are SDKs for other languages)。在该 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 个帐户。
我正在尝试使用 azure-documentdb api 连接到 cosmosDb。
public class 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 (for .NET, there are SDKs for other languages)。在该 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 个帐户。