是否可以簡單地顯示meteor-presence的在線用戶數量(當前登錄)?
我看到Meteor.presences
集合中的文檔默認情況下不會自行刪除它,所以很簡單Meteor.presences.find().count()
不是我正在查找的值...我應該手動刪除它們還是應該檢查每個文檔是否有userID
字段?獲取流星狀態的在線用戶
編輯:
爲了說明更多的事情發生在我身上,我試着用2個不同的瀏覽器登錄2個不同的用戶。在致電Meteor.presences
後,我可以在我的收藏中看到兩個文件,例如
docs: {
djF3noxe3AhxDRfZw: {
_id: "djF3noxe3AhxDRfZw",
state: "online",
userId: "SDeLPJzoabFt4Knei"
}, {
t4r2Q7KGKji4FPS9s: {
_id: "t4r2Q7KGKji4FPS9s",
state: "online",
userId: "5zvYoC37aXSADGNEg"
}
}
經過幾分鐘的不活動後,兩份文檔看起來都是一樣的。註銷一個用戶(主叫Meteor.logout()
)後,我仍然有2個文件(甚至是幾分鐘後),唯一不同的是,其中一人有沒有更多的userID
:
docs: {
djF3noxe3AhxDRfZw: {
_id: "djF3noxe3AhxDRfZw",
state: "online"
}, {
t4r2Q7KGKji4FPS9s: {
_id: "t4r2Q7KGKji4FPS9s",
state: "online",
userId: "5zvYoC37aXSADGNEg"
}
}
只有關閉該瀏覽器窗口後的相關文件刪除自己。
因此,如果我在打開兩個窗口時撥打Meteor.presences.find().count()
,我總是得到2
作爲回報,無論用戶的在線/離線狀態如何。
所有我使用目前的代碼是一個來自例如:
Meteor.publish('userPresence', function() {
var filter = {};
return Meteor.presences.find(filter, {fields: {state: true, userId: true}});
});
我看到相同的東西,它也困惑了我。但是當你考慮它時,看到該頁面的訪問者也是一個在場的人,但沒有userId。所以任何訪客都會出現在收藏中是有道理的。 如果您只想查看登錄用戶,您可以將過濾器更改爲 var filter = {userId:{$ exists:true}}; – Jamgold 2013-05-29 21:11:10
嗯,是的,似乎這個過濾器沒有把戲=)你可以發佈這個答案,所以我可以接受它嗎? – errata 2013-05-30 10:05:22