如何在Meteor方法中使用全局常量?

时间:2015-10-04 14:43:09

标签: mongodb meteor

我有一个Meteor方法,我希望传递星期值:

Meteor.methods({
    'insertShift': function(dow, shiftnum, . . .) {
        check(dow, Number);
        check(shiftnum, Number);
        . . .

        Shifts.insert({
            sh_dow: dow,
            sh_shiftnum: shiftnum,
            . . .
            sh_createdBy: this.userId
        });
    },
    . . .

而不是存储字符串字段,例如" Mon"或者"周二"在MongoDB文档中,我想存储一个int(其中1 =星期一,2 =星期二等),所以调用将是这样的:

Meteor.call('insertShift', 1, 1, . . .) { . . .

...如果我在星期一插入班次1的值。

但是,我不确定这样做的Meteorific方式。我应该在我的两个\ consts.js文件中添加这样的内容:

const int Monday = 1;
const int Tuesday = 2;
const int Wednesday = 3;
const int Thursday = 4;
const int Friday = 5;
const int Saturday = 6;
const int Sunday = 7;

...然后调用这样的方法:

Meteor.call('insertShift', Monday, 1, . . .) { . . .

?或者是什么/如何?

1 个答案:

答案 0 :(得分:3)

我建议使用与日期getDay相同的编码:星期日= 0,星期一= 1,等等。

以下是包含dayString函数进行翻译的班次的model示例:

var DAYS = []
DAYS[0] = 'Sunday';
DAYS[1] = 'Monday';
DAYS[2] = 'Tuesday';
DAYS[3] = 'Wednesday';
DAYS[4] = 'Thursday';
DAYS[5] = 'Friday';
DAYS[6] = 'Saturday';

// Shift model
Shift = function(doc) {
  _.extend(this, doc);
};

_.extend(Shift.prototype, {
  // returns a string like 'Monday'
  dayString: function() {
    return DAYS[this.dow];
  }
});

// Shifts collection
Shifts = new Mongo.Collection('shifts', {
  transform: function(doc) {
    return new Shift(doc);
  }
});

现在,您可以这样做:

var shift = Shifts.findOne();
console.log(shift.dayString());