C# в Java с использованием того же Azure SDK, просто разные языки
Я пытался преобразовать это утверждение из C# в JAVA, но без особой удачи. Да, я ищу Azure, stackru и тому подобное, но не могу найти хороший пример READDOCUMENT в Java.
UserInfo response = _DocumentClient.ReadDocument<UserInfo>(UriFactory.CreateDocumentUri(_DBConfiguration.DatabaseID, _DBConfiguration.DocumentCollectionId, pPhoneNumber));
Это насколько я получил:
UserInfo returnUserInfo = null;
try {
//todo: document link is incorrect, but reference pPhoneNumber as key
ResourceResponse<Document> response = _DocumentClient.readDocument(<<NEED To generate URI>>,null);
if (response != null) {
Document returnUserInfoDocument = response.getResource();
returnUserInfo = <<I have a document, but can't cast it to USERINFO>>;
}
}
catch (DocumentClientException ex) {
if (!ex.getError().getCode().equals("NotFound")) {
throw ex;
}
}
return returnUserInfo;
2 ответа
У меня лично нет опыта работы с Java SDK, но немного погуглил это. Есть много примеров использования внутри этого репо.
Части, с которыми вы боретесь, генерируют URI документа. Похоже, что в C# это немного абстрагируется с помощью некоторых фабричных методов, которые строят для вас строку, но вы можете увидеть в связанном примере, что в Java эквивалент будет:
String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, family.getId());
this.client.readDocument(documentLink, new RequestOptions());
Так что в вашем случае вы бы просто использовали поле номера телефона (или любой другой идентификатор вашего документа в этом формате вместе с вашими документами и идентификаторами коллекции).
Что касается преобразования ответа в UserInfo, вы можете просто обработать ответы как строку JSON и использовать выбранную вами библиотеку десериализации JSON, чтобы выполнить эту работу за вас. В C# мы используем Newtonsoft, но в Java должно быть много опций. Просто попробуйте гуглить java json deserialize
и я уверен, что вы сможете найти много ресурсов.
Просто для протокола, я не понизил ваш вопрос, но я могу понять, почему люди это сделали, и, возможно, вы можете использовать это как возможность для роста. Я буквально набрал documentdb java
в Google, и первые две ссылки - репозитории GitHub, полные примеров кода. Вы должны попытаться искать немного сложнее, прежде чем ожидать, что другие сделают ваше исследование для вас.
Если вы просто хотите узнать, как использовать Azure DocumentDB SDK для Java для доступа к DocumentDB, вы можете обратиться к руководству Azure Cosmos DB: Build a DocumentDB API app with Java and the Azure portal
и README содержание azure-documentdb-java
на GitHub.
Надеюсь, поможет. Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.