使用 Xamarin.Android 在 parse.com 上进行完全外部联接的最佳方法 (c#)
Best approach of doing full outer join on parse.com with Xamarin.Android (c#)
我有这种显示带有用户详细信息的评论的常见情况,我正在尝试找出在 Parse 上执行此操作的最佳方法。
(假设我们有一个 class 评论:id,post,用户和一个 class 用户:id,照片,姓名)。
我正在尝试做这样的事情,但在 Parse 上是不可能的:
var userDetails = ParseObject.GetQuery("User");
var query = ParseObject.GetQuery ("Review")
.WhereEqualTo ("business", application.currentBusiness)
.WhereMatchesQuery ("user", userDetails);
它不起作用,因为用户是一个关系,让我解释一下:
根据我在 documentation 上阅读的内容,有两种方法可以在解析中建立关系。一种是数组,另一种是指针。
当您想要 include 整个对象(在我的例子中是用户)但不超过 100 个结果时,数组很好。
对于大型数据库,指针更好,但为了获得每条评论的用户详细信息,我将不得不执行一个额外的查询..那是很多查询...
所以我的选择是我认为的:
1) 通过与数组的完全外连接检索整个查询
如果我的应用程序越来越大,这个问题就是速度
2) 使用带关系的完全外连接检索整个查询
许多查询。我会很快达到request/sec的parse.com极限。
3) 把我想要的细节存到评论里 class 沿着 User_ID
这可能是个好主意,但我正在使用使用 Facebook 登录,登录后,如果用户照片自上次以来发生变化,将会更新,所以如果我想使用这个想法我不得不以某种方式禁用照片的更新。
4)使用数组,每次只检索一定数量的评论。
这听起来是最好的方法,我每次都会获得大约 50 秒的时间,并且我可以实现一个 ListView,当我们到达列表末尾时将加载更多评论。
大家怎么看?我需要做什么?我在这里遗漏了什么吗?
毕竟最好的解决方案是为用户使用 指针。
使用指针和 .Include 您可以获得整个用户对象,而无需进行多次查询,也不会破坏用户 class 与评论 class 的连接将整个用户对象存储在评论 class 上,很好。
此外,如果有人想知道如何使用指针进行连接以及如何检索对象,那么这里是检索评论和照片的 q 查询:
var query = ParseObject.GetQuery ("Comments")
.WhereEqualTo ("Article", _article)
.Include ("user");
这是访问照片的方法
_user.photo = queryResult.Get<ParseObject>("user").Get<ParseFile>("profile_pic").Url;
我有这种显示带有用户详细信息的评论的常见情况,我正在尝试找出在 Parse 上执行此操作的最佳方法。
(假设我们有一个 class 评论:id,post,用户和一个 class 用户:id,照片,姓名)。
我正在尝试做这样的事情,但在 Parse 上是不可能的:
var userDetails = ParseObject.GetQuery("User");
var query = ParseObject.GetQuery ("Review")
.WhereEqualTo ("business", application.currentBusiness)
.WhereMatchesQuery ("user", userDetails);
它不起作用,因为用户是一个关系,让我解释一下:
根据我在 documentation 上阅读的内容,有两种方法可以在解析中建立关系。一种是数组,另一种是指针。
当您想要 include 整个对象(在我的例子中是用户)但不超过 100 个结果时,数组很好。
对于大型数据库,指针更好,但为了获得每条评论的用户详细信息,我将不得不执行一个额外的查询..那是很多查询...
所以我的选择是我认为的:
1) 通过与数组的完全外连接检索整个查询
如果我的应用程序越来越大,这个问题就是速度
2) 使用带关系的完全外连接检索整个查询
许多查询。我会很快达到request/sec的parse.com极限。
3) 把我想要的细节存到评论里 class 沿着 User_ID
这可能是个好主意,但我正在使用使用 Facebook 登录,登录后,如果用户照片自上次以来发生变化,将会更新,所以如果我想使用这个想法我不得不以某种方式禁用照片的更新。
4)使用数组,每次只检索一定数量的评论。
这听起来是最好的方法,我每次都会获得大约 50 秒的时间,并且我可以实现一个 ListView,当我们到达列表末尾时将加载更多评论。
大家怎么看?我需要做什么?我在这里遗漏了什么吗?
毕竟最好的解决方案是为用户使用 指针。
使用指针和 .Include 您可以获得整个用户对象,而无需进行多次查询,也不会破坏用户 class 与评论 class 的连接将整个用户对象存储在评论 class 上,很好。
此外,如果有人想知道如何使用指针进行连接以及如何检索对象,那么这里是检索评论和照片的 q 查询:
var query = ParseObject.GetQuery ("Comments")
.WhereEqualTo ("Article", _article)
.Include ("user");
这是访问照片的方法
_user.photo = queryResult.Get<ParseObject>("user").Get<ParseFile>("profile_pic").Url;