Javascript Meteor发布/订阅延迟时间
我正在用x和y坐标在图像上绘制流星集合(敌人)。我可以成功地做到这一点。但是,我有一个发布功能,可以检查用户登录名是管理员还是普通用户。如果用户是管理员,则使用d3绘制所有点,但如果用户是任何其他用户,则仅绘制特定于用户位置的点Javascript Meteor发布/订阅延迟时间,javascript,mongodb,d3.js,meteor,Javascript,Mongodb,D3.js,Meteor,我正在用x和y坐标在图像上绘制流星集合(敌人)。我可以成功地做到这一点。但是,我有一个发布功能,可以检查用户登录名是管理员还是普通用户。如果用户是管理员,则使用d3绘制所有点,但如果用户是任何其他用户,则仅绘制特定于用户位置的点 //Base Publish on User Type if (user === true) { //Admin Return all Points return Hostiles.find(); } else { //Any other user retu
//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}});
};
所有这些都很好。当我更改敌对
位置的xLoc
和yLoc
时,就会出现问题。当管理员登录时,会随着集合中的更改而立即重新绘制。但是,当普通用户登录时,重新绘制会出现延迟。d3重绘通常需要3-10秒。在客户端上,我的订阅和d3都在Meteor.autorun(function(){
)中绘制。也许没有任何方法可以解决这个问题?谢谢。“MongoDB的oplog的当前实现只支持对标量字段的相等检查。所有其他操作(如lte/gte检查)仍然使用旧的10秒poll/diff方法。这将在1.0之前发生变化,因为Meteor团队在oplog实现中添加了更多操作符。”——@Cuberto
但是,在未发布的devel分支上有一个变通方法。请参阅。它允许使用Minimongo支持的任何选择器,但不包含$where或$near。只需使用meteor--使用操作符发布oplog
。
感谢@Cuberto和@alanning提供了出色的解决方案。我假设
xLoc
和yLoc
是从会话
中检索的,因为如果不是,那么只有在其他一些反应性数据源发生更改时才会执行自动运行
(或者,如果光标中的数据发生变化,每10秒一次,这可能就是您看到的情况)。请阅读Meteor博客上的这篇文章:-MongoDB的oplog的当前实现只支持对标量字段进行相等检查。所有其他操作(如lte/gte检查)仍然使用旧的10秒轮询/差分方法。这在1.0之前会有所改变,因为Meteor团队在oplog实现中添加了更多操作符。@从音乐上说,它们是通过会话接收的。@Cuberto这很有意义,谢谢。所以在1.0之前,我必须处理10秒轮询/差分方法吗?@alanning啊,不知道这一点。我想知道这是一个针对oplog和操作员的组合版本
和template-engine-preview-10.1
?