Я пытаюсь определить схему для коллекции с вложенным документом, и родительские, и вложенные документы имеют поля автозначения, которые должны устанавливаться при вставках. Проблема в том, что когда я пытаюсь вставить новый родительский документ (без каких-либо вложенных документов), я получаю сообщение об ошибке, указывающее, что поля вложенного документа являются обязательными.
Вот полный код для воспроизведения проблемы:
main.js
ChatRooms = new Meteor.Collection("chatRooms");
schema_ChatRooms_ChatMesssage = new SimpleSchema({
userId: {
type: String,
label: "User ID",
autoValue: function() {
if (this.isInsert) {
if (! this.isFromTrustedCode) {
return this.userId;
}
} else {
this.unset();
}},
autoform: { omit: true }
},
content: {
type: String,
label: "Content",
max: 1000,
min: 1
},
creationDate: {
type: Date,
label: "Created On",
autoValue: function() {
if (!this.isSet) {
return new Date();
}
else {
this.unset();
}},
autoform: { omit: true }
}
});
schema_ChatRoom = new SimpleSchema({
name: {
type: String,
label: "Name",
max: 50,
min: 1
},
isPublic: {
type: Boolean,
label: "Public"
},
creationDate: {
type: Date,
label: "Created On",
autoValue: function() {
if (!this.isSet) {
return new Date();
}
else {
this.unset();
}},
autoform: { omit: true }
},
// Sub Documents
chatMessages: {
type: schema_ChatRooms_ChatMesssage,
label: "Chat Messages",
optional: true,
autoform: { omit: true }
}
});
ChatRooms.attachSchema(schema_ChatRoom);
if (Meteor.isClient) {
AutoForm.addHooks(null, {
onError: function(operation, error, template) {
alert(operation.toString() + " : " + error.toString());
}
});
}
main.html
<head>
<title>TestSubDoc</title>
</head>
<body>
<h1>Create</h1>
{{> quickForm collection="ChatRooms" id="chatRooms_create_form" type="insert"}}
</body>
Я попытался добавить «необязательный: true» в «chatMessages», но это не помогло. Кажется, что даже когда вложенный документ не включен, автозначение вложенного документа все еще выполняется и создает новый вложенный документ с сгенерированными значениями.
Что я могу сделать, чтобы правильно создать документ с вложенными документами, которые имеют автоматические значения?