【问题标题】:how to define schema for nested arrays in Meteor?如何在 Meteor 中为嵌套数组定义模式?
【发布时间】:2015-11-04 18:45:22
【问题描述】:

我正在使用 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

问题是如何为数组数组定义Schema?

【问题讨论】:

    标签: node.js mongodb meteor


    【解决方案1】:

    您必须在架构中使用type: [Object] 显式定义Seasons.$.Episodes。为 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2011-12-06
      • 2016-02-20
      • 2022-01-03
      • 2015-11-24
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多