- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Activity 表,其中显示哪些用户关注谁。 (fromUser
和 toUser
)我正在构建一个排行榜,以查看关注者中谁的评分最高。
所以我创建了这个查询:
ParseQuery<ParseObject> queryActivityFollowing = new ParseQuery<>("Activity");
queryActivityFollowing.whereEqualTo("type", "follow");
queryActivityFollowing.whereEqualTo("fromUser", ParseUser.getCurrentUser());
queryActivityFollowing.setLimit(500);
// innerQuery, only get Users posted by the users I follow
ParseQuery<ParseUser> queryUserFollowing = ParseUser.getQuery();
queryUserFollowing.whereMatchesQuery("toUser", queryActivityFollowing);
// querySelf
ParseQuery<ParseUser> querySelf = ParseUser.getQuery();
querySelf.whereEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
List<ParseQuery<ParseUser>> queries = new ArrayList<>();
queries.add(queryUserFollowing);
queries.add(querySelf);
query = ParseQuery.or(queries);
query.orderByDescending("rating_count");
query.setLimit(20);
但不知何故,它超时并且从未显示结果。我的查询是否存在效率低下的问题?
谢谢!
编辑:数据说明:Activity
是一个包含 3 列的类,fromUser
、toUser
、type
。 fromUser
和 toUser
是指向 _User
类的指针,type
是一个字符串
在_User
中,我有经典属性和一个名为 rating_count
的整数,它是orderBy条件(上面更新的代码)。
实际上,我认为查询并没有超时,只是返回0个结果。我关注了一些用户,所以这绝对不是预期的输出。
最佳答案
这是一个困难的问题,因为 parse 的查询仅最低程度地支持此类事情。我能提供的最好的想法是这个:
whereEqualTo("type", "follow")
和 whereEqualTo("fromUser", ParseUser.getCurrentUser())
Parse.Query.or()
中解放出来。 setLimit(1000)
将在下面解释原因include("toUser")
result.get("toUser").getInt("rating_count")
因为结果将是 Activity 的实例,并且您会急切地获取其相关的 toUsers。这个方案比您编码的方案更简单,并且可以完成工作。然而,一个主要问题可能是它会丢失关注者超过 1000 名的用户的数据。如果这是一个问题,请告诉我,我可以提出更复杂的答案。一个小缺点是,您将被迫自己在内存中进行搜索(也许是排序)以找到最大的 rating_count。
编辑 - 对于 > 1k 关注者,您必须多次调用查询,将 skip
设置为上一个查询中收到的记录数,收集结果在一个大数组中。
您关于传输如此多数据的观点得到了很好的理解,您可以通过将所有这些放入云函数中,在云中执行内存工作并仅返回客户端需要的记录来最大限度地减少网络使用。 (这种方法的另一个好处是使用 javascript 进行编码,我比 java 说得更流利,因此我可以对代码更加规范)。
编辑 2 - 在云代码中执行此操作的好处是减少了那些具有最高评级的用户(例如 20 个)的网络流量。它没有解决我之前指出的其他问题。这是我在云中执行此操作的方法...
var _ = require('underscore');
Parse.Cloud.define("topFollowers", function(request, response) {
var user = new Parse.User({id:request.params.userId});
topFollowers(user, 20).then(function(result) {
response.success(result);
}, function(error) {
response.error(error);
});
});
// return the top n users who are the top-rated followers of the passed user
function topFollowers(user, n) {
var query = new Parse.Query("Activity");
query.equalTo("type", "follow");
query.equalTo("fromUser", user);
query.include("toUser");
return runQuery(query).then(function(results) {
var allFollowers = _.map(results, function(result) { return result.get("toUser"); });
var sortedFollowers = _.sortBy(allFollowers, function(user) { return user.get("rating_count"); });
return _.first(sortedFollowers, n);
});
}
// run and rerun a query using skip until all results are gathered in results array
function runQuery(query, results) {
results = results || [];
query.skip(results.length);
return query.find().then(function(nextResults) {
results = results.concat(nextResults);
return (nextResults.length)? runQuery(query, results) : results;
});
}
注意 - 我还没有测试过这个,但在生产中也有类似的东西。
关于javascript - 解析: Compound Query on Followers times out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444204/
假设有一条SQL语句: select * from A order by cola 在sqlalchemy中,我们可以使用以下代码: session.query(A).order_by(asc(col
在语句中调用函数sum(int [], arr_size) total = sum((int []){1,2,3,4,5}, 5); 复合文字 (int []){1,2,3,4,5} 作为参数传递。很
有一个MySQL的查询。这种查询在前端很容易解决,但需要MySQL中的一种机制。你如何计算 1 列中的 2 个不同项目?例如:我有这张 table : NAME FRUIT A APPLE
我有一个功能齐全的复合 PostgreSQL 查询... SELECT * FROM (SELECT date_trunc('day', date) date, (array_agg(open ORD
我有一个 LINQ 实体,我需要为其创建一个特殊的字符串值。它是由“-”分隔的 7 个不同的值。使用的一些字段在该表中,而其中一些在不同的表中。我想以某种方式将这个字段添加到实体中,这样我就不必在每次
我正在实现我自己的内容提供程序,因为我要将我的数据库与服务器同步。我的数据存储在 SQLiteDatabase 中,我的一些表有一个复合主键(2 列,每列都是另一个表的外键)。 我刚开始使用 Cont
我想用复合位图创建一个 TextView,我知道 android 支持用复合可绘制对象创建 TextView,但我想在在线下载图片时复合位图 注意:我不想让 LinearLayout 包含 image
我正在尝试读取 .pdb 文件,因此我的代码中有很多变量。为了减少它们(并避免段错误),我想知道是否可以使用外部参数在我的代码中分配数组名称。 我的代码 foo.cpp 的起始位看起来像这样- /*A
我想弄清楚如何更改按钮左侧可绘制图标的颜色。 下面是我使用的 XML 代码: 我试过 android:tint 但图标的颜色没有改变。我被困在这里。 最佳答案 您可以像下面这样以编程方式设置色调
我试图将 jade 设置为复合 js 中的默认模板引擎。当我浏览我发现的文档时 Templating engines By default railway use ejs templating eng
我对复合触发器有疑问。 :new.value 在每一行之前部分是空白/空的,当一个之后部分被指定。 创建表格部分: DROP TABLE test_tab; CREATE TABLE test
正如标题所说,我如何加入/约束 2 个 pymunk 体/形状,使它们不作为一个单独的对象? 例如,在这种情况下,我有一个板 Racket ,由 2 个独立的主体和多边形组成。 我想将 bat 的“
Tridion 模板生成器错误 从模板生成器打开复合模板时,我们收到错误消息 “无法加载文件或 Assembly Tridion.ContentManager.TemplateTypes Ver 5.
我正在编写一个金融市场数据分发应用程序作为我的 M.S 项目的一部分。该应用程序即将完成,但该应用程序的扩展性不佳。 这就是它的工作原理,我订阅了一个“假”交易所来获取市场数据。 订阅后,我得到一个初
是否可以定义一个 CSS 样式,使其默认包含另一个样式? 例如,参加以下类(class): .rounded{ -webkit-border-radius:5px; -moz-border-r
我有一个 Activity 表,其中显示哪些用户关注谁。 (fromUser 和 toUser)我正在构建一个排行榜,以查看关注者中谁的评分最高。 所以我创建了这个查询: ParseQuery que
我正在尝试使用 获取以下每个元素 element = driver.findElement(By.className("code-list-item code-list-item-public "))
我有 2 个表,结构如下: CREATE TABLE `exp_ws_gk_text` ( `WGT_RID` INT(9) NOT NULL AUTO_INCREMENT, `WGT
我有一个包含指向回调函数的指针的结构,如下所示: typedef void (*LOAD_CB)(resource* r); typedef void (*UNLOAD_CB)(resou
我正在使用 C++ amp 编写模拟代码。我有以下问题,但找不到明确的答案。希望有人能帮忙。实际上,它们是相互关联的。 我写了一些像这样的行并且它有效,我已经测试了结果但我需要有人指出它为什么是对或错
我是一名优秀的程序员,十分优秀!