Parse.com ドキュメントでこのアーキテクチャ上の問題に取り組んでいます。Debit と呼ばれる次の「スキーマ」があります。
"createdAt": "2014-12-12T02:31:06.026Z",
"creator": {
"__type": "Pointer",
"className": "_User",
"objectId": "objectId"
},
"date": {
"__type": "Date",
"iso": "2014-12-12T02:31:14.437Z"
},
"debitStatus": 0,
"description": "Gdfvgg",
"from": {
"__type": "Pointer",
"className": "_User",
"objectId": "Sd9B1XyZVL"
},
"has_accepted": false,
"objectId": "objectId",
"to": {
"__type": "Pointer",
"className": "_User",
"objectId": "objectId"
},
"updatedAt": "2014-12-12T06:00:46.528Z",
"value": "6.48"
from と to の「列」は、_User
テーブルへのポインタです。from
問題は、私の Android アプリでは、ログに記録されたユーザーに応じてとデビットの両方を表示したいのですto
が、アダプターでは「ログに記録されていないユーザー」ユーザーのみを表示することです。
Parse でクエリを実行してすべての借方クエリを取得しようとしましたが、or
クエリで Parse がサポートされていないため、ユーザー ポインターを含めることができor
ません。
このような:
ParseQuery<ParseObject> query1 = new ParseQuery<ParseObject>("UserBalance");
query1.whereEqualTo("user_from", ParseUser.getCurrentUser());
ParseQuery<ParseObject> query2 = new ParseQuery<ParseObject>("UserBalance");
query2.whereEqualTo("user_to", ParseUser.getCurrentUser());
ParseQuery<ParseObject> query = ParseQuery.or(Arrays.asList(query1, query2));
しかし、問題は「私ではない」アダプターを表示するときです。
アダプタ:
ParseUser user = null;
ParseUser user1 = (ParseUser) object.get("user_to");
if (user1 == ParseUser.getCurrentUser())
user = (ParseUser) object.get("user_from");
else
user = user1;
もちろん、ユーザーをフェッチする必要がありますが、これはアダプターではお勧めできません。それで、データベース側でこれを改善するためのより良いアプローチはありますか?
ありがとう