我正在使用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