接近使用每日数据库条目的自动化系统

时间:2014-07-27 16:55:52

标签: javascript mongodb database-design meteor

我正在建立一个管理寄宿学校学生的系统,以取代不必要的大量文书工作。作为其中的一部分,一些学生不是寄宿生,因此每天离开学校回家。文书工作系统每天打印出一份非寄宿学生名单,学生在离开时自行检查。

我使用Meteor复制了这个系统,但是我相信我的系统存在根本缺陷,至少它非常容易出错。我创建了一个'门票数据库。每张票都记录了特定日期内特定非寄宿学生的历史。为了初始化票证,服务器使用cron作业每天午夜执行以下功能。

function insertDailies() {
console.log("Daily Tickets Generated")
var dailyStudents = Meteor.users.find({"profile.daily": true}); //Insert all daily students
dailyStudents.forEach(function(dailyStudent) {
    Dailies.update({ //Dailies is a collection of these tickets 
            student: dailyStudent,
            date: today().toDate() //Using moment.js
        }, {
            $setOnInsert: {
                student: dailyStudent,
                date: today().toDate(),
                left: false,
                dinner: false,
                stayLate: false,
                sleep: false,
                room: null
            }
        }, {
            upsert: true
    });
});

}

其中leftdinnerstayLatesleep是每个学生可以拥有的四种非互斥状态。

目前的系统是可以接受的,只是它容易出错并且不可靠 - 在某些情况下,系统会为每个学生生成两张票。在UTC以外的时区午夜之后不久访问系统时,门票偶尔会无法显示。许多其他与时间相关的错误似乎是由系统与日期联系造成的。

是否有更好的,更具抗虫性的方法来每天跟踪每个学生的状态?即使我用其他东西替换当前系统,时间依赖性(而不是像大多数其他动作那样的事件驱动依赖)会强制不可靠性继续吗?

0 个答案:

没有答案