我无法使用 autoForm 将新的嵌套/数组值添加到集合中。
我正在尝试使用 quickForm 来更新问题。我希望用户能够添加更多答案选项。我的架构看起来像这样(简化为省略顺序、一些元数据等):
questionSchema = new SimpleSchema({
label: {
type: String
},
answers: {
type: Array,
minCount: 2,
maxCount: 6
},
"answers.$": {
type: Object
},
"answers.$._id": {
type: String,
regEx: SimpleSchema.RegEx.Id,
autoValue: function(){ return Random.id(); },
autoform: {
type: "hidden"
}
},
"answers.$.label": {
type: String,
regEx: /.{1,150}/,
autoform: {
label: false
}
},
"answers.$.count": {
type: Number,
defaultValue: 0,
autoform: {
type: "hidden"
}
}
});
除此之外,当我只是通过 quickForm 添加问题时answers.$.label
,我没有使用任何选项。当我想编辑问题时,我添加了这些选项,因为否则我会收到投诉说我将其保留为空。所以我把它们隐藏起来,但让它们在形式中。autoform
type='insert'
count
我的编辑表单如下所示:
{{> quickForm collection="Questions" id="editQuestionForm"
type="update" setArrayItems="true" doc=questionToEdit
fields="label, answers"}}
我目前能够更新我的问题的标签以及我最初添加的任何答案。但我无法添加新的答案选项。当我这样做时,它被拒绝,因为count
它不是可选的。但我指定了一个defaultValue
...
我宁愿我的 quickForm 看起来像这样,这样我就不会将count
s 或_id
s 放在用户可以更改它们的地方:
{{> quickForm collection="Questions" id="editQuestionForm"
type="update" setArrayItems="true" doc=questionToEdit
fields="label, answers, answers.$.label"}}
但也许我需要保留answers.$._id
在那里并隐藏以确保我的更改更新正确的答案?
所以:
我的答案计数在插入时默认为 0,那么为什么在我编辑和添加答案时不会发生这种情况?
autoForm 可以进行更新而不是更新吗?插入新问题、更新现有问题标签、使用
defaultalue
或autoValue
根据需要。我应该对这种事情使用一种方法吗?