У меня довольно обширный сайт, построенный на основе Apostrophe-CMS, с интенсивным использованием схем объектов и интерфейсов редактора администратора. У меня были проблемы с массивами в течение очень долгого времени, и я никогда не мог понять, что происходит. Кажется, это происходит с каждым определенным массивом, но вот конкретный пример c (это добавленное поле для пользователей-апострофов):
{
name: 'subscriptions',
label: 'Memberships',
type: 'array',
titleField: 'subscriptionYear',
schema: [
{
name: '_subscription',
withType: 'subscription-type',
type: 'joinByOne',
idField: 'subscriptionId',
filters: {
projection: {
type: 1,
name: 1,
description: 1,
agreement: 1,
familyMembers: 1,
title: 1,
_allowedGroup: 1,
allowedGroupId: 1,
price: 1
}
}
},
{
name: 'expirationDate',
label: 'Expiration Date',
type: 'date',
required: false
},
{
name: 'waiverSignature',
label: 'Waiver Signature',
type: 'string',
readOnly: true
},
{
name: '_payment',
withType: 'payments',
type: 'joinByOne',
idField: 'paymentId',
titleField: 'subscriptionType',
filters: {
projection: {
paymentDate: 1,
userEmail: 1,
paymentAmount: 1,
subscriptionType: 1,
subscriptionYear: 1,
receiptEmail: 1
}
}
},
{
name: 'familyMembers',
label: 'Family Members',
type: 'array',
titleField: 'familyMemberName',
schema: [
{
name: 'familyMemberName',
label: 'Family Member Name',
type: 'string'
},
{
name: 'familyMemberBirthDate',
label: 'Family Member Birth Date',
type: 'date'
}
]
}
]
}
Проблема, с которой я сталкиваюсь, заключается в том, что удаление элементов из этого массива не работает, если вы сначала не сохраните объект. Если я пытаюсь удалить элемент из массива без предварительного сохранения пользователя, запись мигает в списке (исчезает и почти сразу появляется снова). Там нет ошибок консоли. Но если я открою пользователя, сохраню его (даже если не было внесено никаких изменений), а затем снова открою пользователя, не закрывая список частей пользователя, я смогу удалить элементы из массива и снова сохранить. Есть идеи, почему это может происходить?
Спасибо!