2015-11-04 68 views
1

我正在使用SimpleSchema和流星来构造数据库条目。如何在Meteor中为嵌套数组定义模式?

问题是,我有一个数组数组和定义的模式不起作用。

这里有一个文件的例子:

Courses.insert({ 
    "persian_title":"persian title", 
    "english_title":"english title", 
    "free_for_all":true, 
    "price":1000, 
    "is_offer":false, 
    "offer_price":500, 
    "Seasons":[ 
     { 
     "title":"first Season", 
     "free_for_all":false, 
     "Episodes":[ 
      { 
       "title":"first Episode", 
       "length":"12:10:00", 
       "url":"test" 
      }, 
      { 
       "title":"second Episode", 
       "length":"0:10:00", 
       "url":"test" 
      }, 
      { 
       "title":"third Episode", 
       "length":"14:10:00", 
       "url":"test" 
      } 
     ] 
     }, 
     { 
     "title":"Second Season", 
     "free_for_all":false, 
     "Episodes":[ 
      { 
       "title":"first Episode", 
       "length":"12:10:00", 
       "url":"test" 
      }, 
      { 
       "title":"second Episode", 
       "length":"0:10:00", 
       "url":"test" 
      }, 
      { 
       "title":"third Episode", 
       "length":"14:10:00", 
       "url":"test" 
      } 
     ] 
     } 
    ] 
}) 

和架构:

Courses = new Mongo.Collection("courses"); 
var Schemas = {}; 
Schemas.Courses = new SimpleSchema(
    { 
     persian_title: { 
      type: String 
     }, 
     english_title: { 
      type: String 
     }, 
     free_for_all: { 
      type: Boolean 
     }, 

     price: { 
      type: Number 
     }, 
     is_offer: { 
      type: Boolean 
     }, 
     offer_price: { 
      type: Number 
     }, 


     // Seasons 

     "Courses.$.Seasons": { 
      type: [Object] 
     }, 
     "Courses.$.Seasons.$.title": { 
      type: String 
     }, 
     "Courses.$.Seasons.$.free_for_all": { 
      type: Boolean 
     }, 
     // Episodes 
     "Courses.$.Seasons.$.Episodes": { 
      type: [Object] 
     }, 
     "Courses.$.Seasons.$.Episodes.title": { 
      type: String 
     }, 
     "Courses.$.Seasons.$.Episodes.length": { 
      type: String, 
      max: 8 
     }, 
     "Courses.$.Seasons.$.Episodes.url": { 
      type: String, 
      max: 1000 
     } 


    }); 
Courses.attachSchema(Schemas.Courses); 

简单模式机制的文档:https://github.com/aldeed/meteor-simple-schema#schema-keys

的问题是如何定义模式的数组的数组?

回答

1

你必须明确地在你的schema定义Seasons.$.Episodestype: [Object]。定义Seasons对象阵列的架构如下:

Courses = new Mongo.Collection("courses"); 
var Schemas = {}; 
Schemas.Courses = new SimpleSchema(
    { 
     persian_title: { 
      type: String 
     }, 
     english_title: { 
      type: String 
     }, 
     free_for_all: { 
      type: Boolean 
     },  
     price: { 
      type: Number 
     }, 
     is_offer: { 
      type: Boolean 
     }, 
     offer_price: { 
      type: Number 
     },  
     // Seasons 
     "Seasons": { 
      type: [Object] 
     }, 
     "Seasons.$.title": { 
      type: String 
     }, 
     "Seasons.$.free_for_all": { 
      type: Boolean 
     }, 
     // Episodes 
     "Seasons.$.Episodes": { 
      type: [Object] 
     }, 
     "Seasons.$.Episodes.$.title": { 
      type: String 
     }, 
     "Seasons.$.Episodes.$.length": { 
      type: String, 
      max: 8 
     }, 
     "Seasons.$.Episodes.$.url": { 
      type: String, 
      max: 1000 
     } 
    }); 
Courses.attachSchema(Schemas.Courses);