我在Parse.com文档中遇到了这个架构问题。 我有以下" schema",名为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"
来自"列"是指向_User
表的指针。问题是,在我的Android应用中,我想根据记录用户显示from
和to
借记,但我的适配器只显示"未记录的用户&# 34;用户。
我尝试对Parse进行or
查询以获取所有借记查询但我无法包含用户指针,因为在or
查询Parse不支持。
像这样:
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));
但问题是在显示&#34;而不是我&#34;适配器:
适配器:
ParseUser user = null;
ParseUser user1 = (ParseUser) object.get("user_to");
if (user1 == ParseUser.getCurrentUser())
user = (ParseUser) object.get("user_from");
else
user = user1;
当然我需要获取用户,在适配器中这不是一个好主意。那么,在数据库方面是否有更好的方法来改进这一点?
由于
答案 0 :(得分:0)
Parse是一个数据库,API将向您发送数据库中的记录。如果您想要计算&#34;其他方&#34;您可以创建Parse.com cloud function。您在Parse.com一侧的交易。该功能将由当前用户提供,并且可以使用完整的JavaScript API,因此应该可以使用。
但这对我来说似乎有些过分。他们的示例将许多评论行的信息聚合到一个评级中,这应该加快结果的传输。在您的情况下,您计算一个新列,您也可以在客户端计算,就像您一样。
因此,我认为您目前的方法没有任何问题。我认为,展示&#34;其他方&#34;是你的适配器的工作并不奇怪。我称之为视图逻辑,是如何向用户显示数据的选择。因此,如果适配器需要显示&#34;其他方&#34;,那么适配器需要知道要过滤掉的两个用户中的哪一个。
要将事情分开一点,您可以在适配器类中创建一个currentUser
字段并将其填充到构造函数中或使用setter。然后适配器不需要调用ParseUser.getCurrentUser()
本身。例如,这可以帮助您为适配器创建单元测试。
如果您希望其余代码更加独立于Parse.com,您可以创建某种数据访问对象来计算&#34;其他方&#34;列并将数据转换为nonParse.com对象。对我来说,这似乎是一种不同的矫枉过正。