2017-05-22 17 views
0

배열로 서브 스키마를 가져 오려고합니다. 문제를 해결할 올바른 방법이라고 생각합니다. 그러나 잘못 입력 한 경우 수정하십시오. AutoForm 패키지에서 제공하는 BooksSchema 예제를 기반으로 간단한 문제를 보여주는 예제를 제공합니다. 필자의 예에서는 Libraries 컬렉션이 있고 'Libraries'개체의 필드 중 하나가 해당 도서관의 책 컬렉션입니다. AutoForm을 렌더링해도 My Book 컬렉션에 정의 된대로 입력 레이블이 제공되지 않고 빈 텍스트 입력 필드가 하나만 표시됩니다.AutoForm, SimpleSchema를 사용하여 배열 항목으로 서브 스키마 배열

스키마 :

import SimpleSchema from 'simpl-schema'; 
SimpleSchema.extendOptions(['autoform']); 

BooksSchema = new SimpleSchema({ 
    title: { 
    type: String, 
    label: "Title", 
    max: 200 
    }, 
    author: { 
    type: String, 
    label: "Author" 
    }, 
    copies: { 
    type: Number, 
    label: "Number of copies", 
    min: 0 
    }, 
    lastCheckedOut: { 
    type: Date, 
    label: "Last date this book was checked out", 
    optional: true 
    }, 
    summary: { 
    type: String, 
    label: "Brief summary", 
    optional: true, 
    max: 1000 
    } 
}, { tracker: Tracker }); 

LibrariesSchema = new SimpleSchema({ 
    collection: { 
    type: Array 
    }, 
    'collection.$': { 
     type: BooksSchema, 
     minCount: 1 
    } 
}); 

LibrariesSchema.extend(BooksSchema); 


Libraries = new Mongo.Collection("libraries"); 
Libraries.attachSchema(LibrariesSchema); 

자동 폼 :

{{> quickForm collection="Libraries" id="insertBookForm" type="insert"}} 

정말 오랜 시간이 지금이 고민하고, 당신의 시간 동안 당신에게 사전에 너무 감사합니다! 특정 유형의

+0

확장을 사용하여 두 스키마를 결합해야합니다. 예 : '''MainSchema.extend (SubSchema);''' – blueren

+0

@blueren 시간 내 주셔서 대단히 감사합니다. 이 'extend'(편집 된 질문 참조)를 포함하도록 코드를 업데이트했지만 불행히도 내게 변경되지 않았습니다. – WalterB

답변

0
LibrariesSchema = new SimpleSchema({ 
    'books': { 
     type: [BooksSchema], 
     minCount: 1 
    } 
}); 

배열은, check() 또는 스키마 정의에 사용하기 위해, 예를 들어, [SomeType]으로 지정됩니다. [String] 또는 [BooksSchema]을 입력하십시오.

+0

답장을 보내 주셔서 대단히 감사합니다. 불행히도 귀하의 코드를 사용할 때 다음과 같은 오류가 나타납니다 : '잡히지 않은 오류 : 도서에 대한 정의가 잘못되었습니다. 필드 : "유형"이 배열이 아닐 수 있습니다. 배열로 변경하십시오. '. 제가 올바르게 이해했다면이 괄호는 AutoForms 6.0과 collection2-core 이후로 더 이상 사용되어서는 안됩니다. 예 : https://github.com/aldeed/meteor-simple-schema#combining-simpleschemas. 다시 한 번 감사드립니다! – WalterB

+0

내가 말한 것은 사실 더 이상 사실이 아닐 수도 있습니다. 나는 이전 프로젝트를 위해 SimpleSchema를 사용했다. –