У меня есть схемы, настроенные так, что я могу иметь массив сложных входных наборов. Что-то вроде:
address = {
street:{
type: String
},
city: {
type: String
},
active_address: {
type: Boolean,
optional: true
},
...
}
people: {
name:{
type: String
},
address:{
type: [address],
optional: true,
defaultValue: []
}
}
Таким образом, добавление адреса является необязательным, но если вы добавляете адрес, все поля адреса являются обязательными.
Это работало (думаю, так и было) в версии 4.2.2. Это по-прежнему работает с автоформами типа insert
, но не с автоформами типа update
. При обновлении ни одно из полей не будет отправлено, если все обязательные поля во вложенной схеме также недействительны.
Для справки, я создаю форму как таковую:
{{#autoForm collection="people" id=formId type="update" doc=getDocument autosave=true template="autoupdate"}}
{{> afQuickField name='name' template="autoupdate" placeholder="schemaLabel"}}
{{> afQuickField name='address' template="autoupdate"}}
{{/autoForm}}
Мои шаблоны (autoupdate
) Я скопировал и вставил все шаблоны автоформы bootstrap3 и переставил часть html в соответствии со своими потребностями. Я обновил их в меру своих возможностей в соответствии с журналом изменений 5.0.0 при обновлении. Возможно, это может быть там, если кто-то подумает об атрибуте в шаблонах, который может вызвать непоследовательное поведение между вставкой и обновлением, которое изменилось в 5.0.0.
Дополнительная информация
Я только что попытался воссоздать все свои шаблоны форм, используя шаблоны bootstrap3 из 5.0.2. Все то же поведение.
+
У меня есть логический ввод (флажок) в адресной схеме. Глядя в документ, массив адресов заполнен [0 : {active_address: false}]
active_address: {
type: Boolean,
optional: true
}
Не уверен, что это поможет...
+
По предложению @mark я добавил defaultValue:[]. Это решило проблему... вроде. В форме обновления теперь нет "открытых" вложенных схем, а остальные значения можно изменить. Если вы «добавите» вложенную схему в форму с помощью кнопки «Добавить», вся форма станет обязательной, даже если вы не вставите никакого значения ни в одно поле. Это происходит независимо от ввода типа Boolean
.
Я могу указать, что ввод типа Boolean
во вложенной схеме приводит к тому, что вся вложенная схема становится необходимой для вставки. Удаление логического ввода привело к тому, что его снова можно было вставить. Так что есть новая проблема в том же духе.
Эту новую проблему можно найти здесь
autoValue
/defaultValue
в поле адреса? - person mark   schedule 17.03.2015