我正在構建一個使用流星的在線測驗系統。預計測驗中的每個用途都有自己的計時器,設置爲一個小時。計時器應該在用戶首次登錄時啓動。 我目前正在維護一個名爲UserClocks(userId,timeLeft)的集合。流星個人用戶計時器 - setInterval()
我寫了的setInterval這樣
var interval = Meteor.setInterval(function() {
console.log("User id: " + this.userId);
console.log("Searching clock for: " + clocksMap[this.userId]);
//clocksMap contains the _id of the UserClocks.
var userClock = UserClocks.find({_id: clocksMap[this.userId]});
if (!!userClock) {
console.log("Found clock: " + userClock.timeLeft);
} else {
console.log("Clock not found for user: " + this.userId);
}
var time = userClock.timeLeft;
time = time - 1;
UserClocks.update(userClock._id, {timeLeft: time});
console.log("Updated userClock. timeleft: " + time);
if (time === 0) {
//logout user and clear interval
Meteor.clearInterval(intervalMap[this.userId]);
}
}, 1000);
此的setInterval()是一個被稱爲B中的用戶的方法的內部。 由於userClock未定義,我一直將timeLeft設置爲NaN。 我想我明白了爲什麼我不能在setInterval()中使用this.userId,但我需要解決我的問題。我怎樣才能爲每個用戶分別設置計時器?
我也嘗試了userId從方法的參數到.find()。它仍然返回未定義timeLeft! – Pawan
如果用戶進入控制檯,UserClocks.update(userClock._id,{timeLeft:999999})''怎麼辦? –
我試過了,但沒有定義。但是,UserClocks.find({_ id:「o8y5nw4Wp5H7SF8bP」)返回LocalCollection.Cursor。我正在使用不安全的軟件包,並將我的UserClocks放入我的model.js中共享 – Pawan