私はJavaクライアントAPIを使用しようとしています、特にgetViewRequestBuilder
cloudant JavaクライアントgetDocsAs()
getDocAs()
と私のCloudantデータは次のようになります。
{
"_id": "30984feadf2246a68d97cbeff8bf06a0",
"_rev": "1-8df71f2f874f9228fffb831779063fa9",
"correlationID": "qweriwern34924df02342jk33",
"status": "Received",
"contactType": "EMAIL",
"ttlHours": 0,
"requestingId": "123456",
"requestingApplication": "JUnit",
"logTimeMs": 1466446389064,
"logTimeString": "20-06-2016 14:13:09",
"tsdHitStatus": false,
"emailContact": {
"to": "[email protected],com",
"bcc": "[email protected]"
},
"sendSecure": false
}
私は三つのフィールドを返すようにビューを作成しました。
if (doc. emailContact.to && doc.correlationID) {
emit(doc.logTimeMs,
{
correlationID: doc.correlationID,
emailAddress: doc.emailContact.to,
contactType: doc.contactType
});
時間範囲に基づいてクエリを取得し、電子メールオブジェクトを返そうとしています。ビューはPostManからうまく動作します。私はこれをJavaから試してみると、2つのフィールドが得られますが、emailAddressフィールドは常にnullです。 getDocAs()
が "doc.emailContact.to"フィールドを理解できないのではないかと思います。
私は、ビュー内の "emailAddress:doc.emailContact.to"という行は、データとクラスの間のマッピングを許可すると考えました。
ビューからデータを取得するためのJavaコードは:
db.getViewRequestBuilder("ch_queries","Email).newRequest(Key.Type.NUMBER, Object.class).startKey(time0).endKey(time1).includeDocs(true).reduce(false).build().getResponse().getDocsAs(Email.class);
Emailクラス
public class Email implements Serializable {
private String correlationID;
private String emailAddress;
private String contactType;
public String getContactType() {
return contactType;
}
public void setContactType(String contactType) {
this.contactType = contactType;
}
public String getCorrelationID() {
return correlationID;
}
public void setCorrelationID(String correlationID) {
this.correlationID = correlationID;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
}