如何使用自动值在SimpleSchema Meteor中定义子文档,而不将其插入每个父文档插入?

我试图为一个子文档集合定义一个模式,父文档和子文档都有自动值字段,应该在插入时设置。 问题是,当我尝试插入一个新的父文档(没有任何子文档),我得到一个错误,指出子文档字段是必需的。

以下是重现问题的完整代码:

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> 

我试过在“chatMessages”中添加“optional:true”,但是没有解决。 这似乎即使没有包含子文档时,子文档autovalue仍然被执行,并用生成的值创build新的子文档。

我能做些什么来正确地创build一个包含自动值的子文档的文档?

可能你需要使schema_ChatRooms_ChatMesssage中的所有字段都是可选的,并且可以通过autoform来完成。