Создайте многострочные текстовые поля для более длинного контента, такого как описания, заметки и комментарии
Пользовательские поля многострочного текста позволяют хранить более длинный текст с переносами строк и форматированием. Они идеально подходят для описаний, заметок, комментариев или любых текстовых данных, которые требуют нескольких строк.
Основной пример
Создайте простое поле многострочного текста:
mutation CreateTextMultiField($projectId: String!) {
createCustomField(
projectId: $projectId
input: {
name: "Description"
type: TEXT_MULTI
}
) {
id
name
type
}
}
Расширенный пример
Создайте поле многострочного текста с описанием:
mutation CreateDetailedTextMultiField($projectId: String!) {
createCustomField(
projectId: $projectId
input: {
name: "Project Notes"
type: TEXT_MULTI
description: "Detailed notes and observations about the project"
}
) {
id
name
type
description
}
}
Входные параметры
CreateCustomFieldInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
name |
String! | ✅ Да | Отображаемое имя текстового поля |
type |
CustomFieldType! | ✅ Да | Должен быть TEXT_MULTI |
description |
String | Нет | Текст помощи, отображаемый пользователям |
Примечание: projectId
передается как отдельный аргумент в мутации, а не как часть входного объекта. В качестве альтернативы контекст проекта можно определить из заголовка X-Bloo-Project-ID
в вашем запросе GraphQL.
Установка текстовых значений
Чтобы установить или обновить значение многострочного текста в записи:
mutation SetTextMultiValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
text: "This is a multi-line text value.\n\nIt can contain line breaks and longer content."
})
}
Параметры SetTodoCustomFieldInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
todoId |
String! | ✅ Да | ID записи для обновления |
customFieldId |
String! | ✅ Да | ID пользовательского текстового поля |
text |
String | Нет | Многострочное текстовое содержимое для хранения |
Создание записей с текстовыми значениями
При создании новой записи с многострочными текстовыми значениями:
mutation CreateRecordWithTextMulti {
createTodo(input: {
title: "Project Planning"
todoListId: "list_123"
customFields: [{
customFieldId: "text_multi_field_id"
value: "Project Overview:\n\n1. Research phase\n2. Design phase\n3. Implementation phase\n\nKey considerations:\n- Budget constraints\n- Timeline requirements\n- Resource allocation"
}]
}) {
id
title
customFields {
id
customField {
name
type
}
text
}
}
}
Поля ответа
Ответ TodoCustomField
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор для значения поля |
customField |
CustomField! | Определение пользовательского поля |
text |
String | Хранимое многострочное текстовое содержимое |
todo |
Todo! | Запись, к которой принадлежит это значение |
createdAt |
DateTime! | Когда значение было создано |
updatedAt |
DateTime! | Когда значение было в последний раз изменено |
Проверка текста
Проверка формы
Когда многострочные текстовые поля используются в формах:
- Ведущие и завершающие пробелы автоматически удаляются
- Применяется проверка обязательности, если поле помечено как обязательное
- Не применяется проверка на конкретный формат
Правила проверки
- Принимает любой строковый контент, включая переносы строк
- Нет ограничений по длине символов (до пределов базы данных)
- Поддерживает символы Unicode и специальные символы
- Переносы строк сохраняются в хранилище
Примеры допустимого текста
Single line text
Multi-line text with
line breaks
Text with special characters:
- Bullets
- Numbers: 123
- Symbols: @#$%
- Unicode: 🚀 ✅ ⭐
Code snippets:
function example() {
return "hello world";
}
Важные примечания
Вместимость хранения
- Хранится с использованием типа MySQL
MediumText
- Поддерживает до 16 МБ текстового содержимого
- Переносы строк и форматирование сохраняются
- Кодировка UTF-8 для международных символов
Прямой API против форм
- Формы: Автоматическое удаление пробелов и проверка обязательности
- Прямой API: Текст хранится точно так, как предоставлен
- Рекомендация: Используйте формы для ввода данных пользователями, чтобы обеспечить согласованное форматирование
TEXT_MULTI против TEXT_SINGLE
- TEXT_MULTI: Ввод многострочного текстового поля, идеально подходит для более длинного контента
- TEXT_SINGLE: Ввод однострочного текста, идеально подходит для коротких значений
- Бэкенд: Оба типа идентичны - одно и то же поле хранения, проверка и обработка
- Фронтенд: Разные компоненты пользовательского интерфейса для ввода данных (textarea против текстового поля)
- Важно: Различие между TEXT_MULTI и TEXT_SINGLE существует исключительно для целей пользовательского интерфейса
Обязательные разрешения
Действие | Обязательное разрешение |
---|---|
Create text field | OWNER or ADMIN project-level role |
Update text field | OWNER or ADMIN project-level role |
Set text value | Any role except VIEW_ONLY or COMMENT_ONLY |
View text value | Any project-level role |
Ответы на ошибки
Проверка обязательного поля (только формы)
{
"errors": [{
"message": "This field is required",
"extensions": {
"code": "VALIDATION_ERROR"
}
}]
}
Поле не найдено
{
"errors": [{
"message": "Custom field not found",
"extensions": {
"code": "CUSTOM_FIELD_NOT_FOUND"
}
}]
}
Рекомендации по лучшим практикам
Организация контента
- Используйте согласованное форматирование для структурированного контента
- Рассмотрите возможность использования синтаксиса, похожего на markdown, для удобочитаемости
- Разделите длинный контент на логические разделы
- Используйте переносы строк для улучшения читаемости
Ввод данных
- Предоставьте четкие описания полей, чтобы направить пользователей
- Используйте формы для ввода данных пользователями, чтобы обеспечить проверку
- Рассмотрите ограничения по символам в зависимости от вашего случая использования
- Проверяйте формат содержимого в вашем приложении, если это необходимо
Соображения по производительности
- Очень длинный текст может повлиять на производительность запросов
- Рассмотрите возможность постраничного отображения больших текстовых полей
- Учитывайте индексацию для функциональности поиска
- Следите за использованием хранилища для полей с большим содержимым
Фильтрация и поиск
Поиск по содержимому
Многострочные текстовые поля поддерживают поиск подстрок через фильтры пользовательских полей:
query SearchTextMulti {
todos(
customFieldFilters: [{
customFieldId: "text_multi_field_id"
operation: CONTAINS
value: "project"
}]
) {
id
title
customFields {
customField {
name
type
}
text
}
}
}
Возможности поиска
- Сопоставление подстрок в текстовых полях с использованием оператора
CONTAINS
- Поиск без учета регистра с использованием оператора
NCONTAINS
- Точное совпадение с использованием оператора
IS
- Отрицательное совпадение с использованием оператора
NOT
- Поиск по всем строкам текста
- Поддерживает частичное совпадение слов
Общие случаи использования
-
Управление проектами
- Описания задач
- Требования к проекту
- Заметки о встречах
- Обновления статуса
-
Поддержка клиентов
- Описания проблем
- Заметки о решениях
- Отзывы клиентов
- Журналы коммуникации
-
Управление контентом
- Содержимое статей
- Описания продуктов
- Комментарии пользователей
- Подробности отзывов
-
Документация
- Описания процессов
- Инструкции
- Рекомендации
- Справочные материалы
Интеграционные функции
С автоматизацией
- Запуск действий при изменении текстового содержимого
- Извлечение ключевых слов из текстового содержимого
- Создание резюме или уведомлений
- Обработка текстового содержимого с помощью внешних сервисов
С справочниками
- Ссылка на текстовые данные из других записей
- Агрегация текстового содержимого из нескольких источников
- Поиск записей по текстовому содержимому
- Отображение связанной текстовой информации
С формами
- Автоматическое удаление пробелов
- Проверка обязательных полей
- Интерфейс многострочного текстового поля
- Отображение количества символов (если настроено)
Ограничения
- Нет встроенного форматирования текста или редактирования с помощью расширенного текста
- Нет автоматического обнаружения или преобразования ссылок
- Нет проверки орфографии или грамматики
- Нет встроенного анализа или обработки текста
- Нет версионирования или отслеживания изменений
- Ограниченные возможности поиска (нет полнотекстового поиска)
- Нет сжатия содержимого для очень большого текста
Связанные ресурсы
- Однострочные текстовые поля - Для коротких текстовых значений
- Поля электронной почты - Для адресов электронной почты
- Поля URL - Для адресов веб-сайтов
- Обзор пользовательских полей - Общие концепции