我正在使用d3绘制一个带有x和y坐标的流星集(Hostiles)到图像上。我可以成功地做到这一点。但是,我有一个发布功能,可以检查用户登录名是admin还是普通用户。如果用户是管理员,它使用d3绘制所有点,但是当它是任何其他用户时,它只绘制特定于用户位置的点。流星发布/订阅延迟时间
//Base Publish on User Type
if (user === true) {
//Admin Return all Points
return Hostiles.find();
} else {
//Any other user returns location specific points
return Hostiles.find({latitude: {$lte: xLoc + 80, $gte: xLoc - 80}, longitude: {$lte: yLoc + 80, $gte: yLoc - 80}});
};
所有这些工作正常。当我更改Hostile
位置的xLoc
和yLoc
时,会发生此问题。当管理员登录时,随着集合中的更改,重绘将立即生效。但是,当普通用户登录时,重绘时间会有所延迟。这个d3重画通常需要3-10秒。在客户端,我有我的订阅和d3绘制在Meteor.autorun(function() {
。也许有没有办法解决这个问题?谢谢。
我假设从'Session'中检索到'xLoc'和'yLoc'?因为如果它们不是,那么只有当其他被动数据源发生变化时(或者如果光标中的数据发生变化,这可能是你所看到的那样,每10秒钟一次),'autorun'才会被执行。 –
在Meteor博客上阅读本文:https://www.meteor.com/blog/2013/12/17/meteor-070-scalable-database-queries-using-mongodb-oplog-instead-of-poll-and -diff - MongoDB oplog的当前实现仅支持对标量字段进行等式检查。所有其他操作(如您的lte/gte检查)仍然使用旧的10秒轮询/比较方法。这将在1.0之前改变,因为Meteor团队在oplog实施中增加了更多的操作员。 – sbking
@musically_ut他们收到使用会话。 – Nate