Список (Select)
Поле типа Список позволяет выбирать одно или несколько значений из предопределенного набора опций.
Основные характеристики
- Тип данных: Строка или массив строк
- Источник значений: Предопределенный список опций
- Режимы: Одиночный выбор (Single Select) или множественный выбор (Multi Select)
- Цветовое кодирование: Каждая опция может иметь свой цвет
Режимы работы
Одиночный выбор (Single Select)
Позволяет выбрать только одно значение из списка. Хранится как строка.
{
"name": "status",
"type": "select",
"multiple": false,
"options": ["Новый", "В работе", "Завершен"]
}
Множественный выбор (Multi Select)
Позволяет выбрать несколько значений. Хранится как массив строк.
{
"name": "tags",
"type": "select",
"multiple": true,
"options": ["Срочно", "Важно", "Требует проверки"]
}
Настройки поля
При создании поля типа "Список" доступны следующие настройки:
- Название поля: Отображаемое имя поля
- Системное имя: Уникальный идентификатор для API
- Описание: Подсказка для пользователей
- Обязательное поле: Требовать выбора значения
- Множественный выбор: Разрешить выбор нескольких опций
- Список опций: Набор доступных значений
- Цвета опций: Цветовое кодирование для каждой опции
- Разрешить создание новых опций: Пользователи могут добавлять новые значения
Настройка опций
Каждая опция может иметь:
- Значение: Текст опции
- Цвет: Цвет для визуального выделения
- Порядок: Позиция в списке
{
"name": "priority",
"type": "select",
"options": [
{ "value": "Низкий", "color": "gray" },
{ "value": "Средний", "color": "blue" },
{ "value": "Высокий", "color": "orange" },
{ "value": "Критический", "color": "red" }
]
}
Примеры использования
Статус задачи
{
"name": "status",
"type": "select",
"required": true,
"default": "Новая",
"options": ["Новая", "В работе", "На проверке", "Завершена", "Отменена"]
}
Приоритет
{
"name": "priority",
"type": "select",
"default": "Средний",
"options": ["Низкий", "Средний", "Высокий", "Критический"]
}
Теги (множественный выбор)
{
"name": "tags",
"type": "select",
"multiple": true,
"options": ["Frontend", "Backend", "Design", "Bug", "Feature"]
}
Категория товара
{
"name": "category",
"type": "select",
"required": true,
"options": ["Электроника", "Одежда", "Книги", "Спорт", "Дом и сад"]
}
Работа через API
Создание записи (одиночный выбор)
const record = await emd.database.collection('tasks').create({
title: 'Исправить баг',
status: 'Новая',
priority: 'Высокий'
});
Создание записи (множественный выбор)
const record = await emd.database.collection('tasks').create({
title: 'Разработать функцию',
tags: ['Frontend', 'Feature']
});
Поиск по значению
// Найти все задачи со статусом "В работе"
const tasks = await emd.database.collection('tasks').find({
status: 'В работе'
});
// Найти задачи с определенными тегами
const tasks = await emd.database.collection('tasks').find({
tags: { $in: ['Bug', 'Critical'] }
});
Обновление значения
// Изменить статус
await emd.database.collection('tasks').update(recordId, {
status: 'Завершена'
});
// Добавить тег (для множественного выбора)
const record = await emd.database.collection('tasks').get(recordId);
await emd.database.collection('tasks').update(recordId, {
tags: [...record.tags, 'Urgent']
});
Операторы для полей списка
Одиночный выбор
$eq— равно$ne— не равно$in— входит в список значений$nin— не входит в список значений
Множественный выбор
$in— содержит хотя бы одно из значений$all— содержит все указанные значения$size— количество выбранных опций
// Задачи с тегами Frontend ИЛИ Backend
const tasks = await emd.database.collection('tasks').find({
tags: { $in: ['Frontend', 'Backend'] }
});
// Задачи с тегами Frontend И Bug одновременно
const tasks = await emd.database.collection('tasks').find({
tags: { $all: ['Frontend', 'Bug'] }
});
Управление опциями
Добавление новой опции
Новые опции можно добавлять через админ-панель или API:
await emd.database.collection('tasks').updateField('status', {
options: [...existingOptions, 'Отложена']
});
Переименование опции
При переименовании опции все существующие записи автоматически обновляются:
await emd.database.collection('tasks').updateField('status', {
renameOption: {
from: 'В работе',
to: 'Выполняется'
}
});
Удаление опции
При удалении опции можно указать, что делать с существующими записями:
await emd.database.collection('tasks').updateField('status', {
removeOption: 'Отменена',
replaceWith: 'Завершена' // или null для очистки
});
Рекомендации
- Используйте Single Select для статусов и категорий
- Используйте Multi Select для тегов и меток
- Ограничивайте количество опций (оптимально 5-15)
- Используйте цветовое кодирование для важных статусов
- Для большого количества опций (>20) рассмотрите использование связей (Relation)
- Документируйте значение каждой опции
- Используйте понятные и короткие названия опций
- Избегайте дублирования опций с разным регистром
Отличие от других типов
- Select vs String: Select ограничивает выбор предопределенными значениями
- Select vs Relation: Select для простых категорий, Relation для связи с другими коллекциями
- Select vs Boolean: Boolean для бинарного выбора, Select для множественных опций