Meteor SimpleSchema重复嵌套对象

时间:2016-06-29 00:10:53

标签: javascript meteor simple-schema

我想知道是否有一种简单的方法可以做到这一点。首先,这是我目前的架构:

Test.schema = new SimpleSchema({
  owner: {
    type: String,
    label: 'Owner of the test',
  },
  name: {
    type: String,
    label: 'Name of the test',
  },
  createdAt: {
    type: Date,
    label: 'Date of test creation',
  },

  // MY QUESTION IS FOR THE OBJECT BELOW

  [LOVE]: {
    type: Object,
    label: `Configuration for ${LOVE}`,
  },
  [LOVE.one]: { type: Boolean },
  [LOVE.two]: { type: Boolean },
  [LOVE.three]: { type: Boolean },
  [LOVE.four]: { type: Boolean },
  [LOVE.five]: { type: Boolean },
  [LOVE.six]: { type: Boolean },
  [LOVE.seven]: { type: Boolean },
  [LOVE.eight]: { type: Boolean },
  [LOVE.nine]: { type: Boolean },
});

如果我有LOVE变量,我希望它等于多个值,这样我就不必一遍又一遍地编写相同的模式。

我以为我可以使用像正则表达式这样的东西,但我不知道。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

只需使用嵌套架构:

lovers = new SimpleSchema({
  one:   {type: boolean},
  two:   {type: boolean},
  three: {type: boolean},
  four:  {type: boolean},
  five:  {type: boolean},
  six:   {type: boolean},
  seven: {type: boolean},
  eight: {type: boolean},
  nine:  {type: boolean},
});

然后在原始架构中重复使用它:

Test.schema = new SimpleSchema({
  owner: {
    type: String,
    label: 'Owner of the test',
  },
  name: {
    type: String,
    label: 'Name of the test',
  },
  createdAt: {
    type: Date,
    label: 'Date of test creation',
  },
  LOVE:    { type: lovers },
  PASSION: { type: lovers },
  DESIRE:  { type: lovers },
  etc...
});

希望这就是你所追求的。

答案 1 :(得分:0)

它应该是

  relations : { type : [boolean] }

那么你会有

 LOVE.relations 

作为8个条目的集合。不需要将它限制在这些8我假设。

您可以使用不同的术语,可能是事务或更好的匹配,但背后的想法只是以集合用于此目的的方式使用它。