У меня возникли проблемы с добавлением новых значений вложенных/массив в коллекцию с помощью 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"
}
}
});
Другой чем answers.$.label
, я не использовал никаких autoform
варианты, когда я только добавляющие вопросы через QuickForm type='insert'
. Я добавил эти параметры, когда я хотел редактировать вопросы, потому что в противном случае у меня появилась жалоба, что я оставил count
null. Поэтому я заставил их спрятаться, но пусть они будут в форме.
Моя форма редактирования выглядит следующим образом:
{{> quickForm collection="Questions" id="editQuestionForm"
type="update" setArrayItems="true" doc=questionToEdit
fields="label, answers"}}
Я в настоящее время в состоянии обновить метки на мой вопрос и ответы, которые я сначала добавил. Но я не могу добавить новые варианты ответов. Когда я это делаю, это отрицается, потому что count
не является обязательным. Но я указан defaultValue
...
Я предпочел бы мой QuickForm выглядеть так, что я не помещая count
с или _id
сек, где пользователь может изменить их:
{{> quickForm collection="Questions" id="editQuestionForm"
type="update" setArrayItems="true" doc=questionToEdit
fields="label, answers, answers.$.label"}}
Но, может быть, я нужно сохранить answers.$._id
и скрывать, чтобы мои изменения обновили правильные ответы?
Итак:
Мой отсчеты ответ по умолчанию 0 на вставке, так почему же не то, что произойдет, когда я редактировать и добавлять ответы?
Может ли autoForm сделать upsert вместо обновления? Вставьте новые вопросы, обновите существующие метки вопросов, используйте
defaultalue
илиautoValue
при необходимости.Должен ли я использовать метод для этого типа вещей?
Есть несколько возможностей. Первое, что я хочу знать, это то, что вы делаете со свойством count? Предполагается ли он увеличиваться для каждого нового добавления (чтобы вы могли, например, индексировать этот произвольный начальный порядок)? --BUT: это может быть так же просто, как ответы 'omitFields =" '. $ ._ id', 'отвечает. $. Count' "' вместо свойства 'fields' – pfkurtz
Свойство count только обновляется клиентским устройством поэтому я просто хочу, чтобы он начинался с 0, если я добавляю ответы. Если я добавлю «omitFields», я все равно получаю «Count is required» для начальных ответов, когда я пытаюсь обновить вопрос. – roblingle
Кроме того, я только разрешаю пользователям обновлять вопросы, на которых есть счетчик ответов 0 по всей доске, поэтому я рассмотрел использование крючка перед обновлением, чтобы убедиться, что все значения равны 0, и оставьте _id в форме и скрыты. – roblingle