我有mongoose模式,其中包含以下枚举值:
kind: {
type: Number,
enum: [0, 1, 2, 3, 5, 10, 11]
}
在我的某些路由器中,我需要使用以下值之一:
Model.create({kind: 10}).exec(callback);
我遇到的问题是使用数字10
代替符号名称。那么在shema和路由中共享命名常量和使用bith的最佳方法是什么?
答案 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);