如何在猫鼬shema中分享枚举值?

时间:2016-05-05 07:26:54

标签: node.js mongodb enums mongoose

我有mongoose模式,其中包含以下枚举值:

kind: { type: Number, enum: [0, 1, 2, 3, 5, 10, 11] }

在我的某些路由器中,我需要使用以下值之一:

Model.create({kind: 10}).exec(callback);

我遇到的问题是使用数字10代替符号名称。那么在shema和路由中共享命名常量和使用bith的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

我喜欢将它们附在模型上:

const ENUM = {
  ONE: 1,
  TWO: 2,
  TEN: 10
};

const kindSchema = new Schema({
  kind: { type: Number, enum: _.values(ENUM) }
});

kindSchema.statics.KINDS = ENUM;

Model.create({ kind: Model.KINDS.TEN });

答案 1 :(得分:2)

您可以为每个kind定义const,并在以下两者中使用它:schema和router:

// consts.js
const KIND0 = 0;
const KIND1 = 1;
...
const KIND10 = 1;
const KINDS = [KIND0, KIND1,...,KIND10];

// schema.js
kind: {
  type: Number,
  enum: KINDS
}

// router.js
Model.create({ kind: KIND10 }).exec(callback);