gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:45 26 4
gpt4 key购买 nike

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

这是重现问题的完整代码:

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”添加“可选:true”,但没有解决问题。似乎即使不包含子文档,子文档自动值仍然会被执行并使用生成的值创建一个新的子文档。

如何正确创建包含具有自动值的子文档的文档?

最佳答案

您可能需要将 schema_ChatRooms_ChatMesssage 中的所有字段设为可选并由自动表单忽略。

关于javascript - 如何在 SimpleSchema Meteor 中使用自动值定义子文档,而不将其插入到每个父文档插入中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com