Создайте многострочные текстовые поля для более длинного контента, такого как описания, заметки и комментарии


Пользовательские поля многострочного текста позволяют хранить более длинный текст с переносами строк и форматированием. Они идеально подходят для описаний, заметок, комментариев или любых текстовых данных, которые требуют нескольких строк.

Основной пример

Создайте простое поле многострочного текста:

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
  • Поиск по всем строкам текста
  • Поддерживает частичное совпадение слов

Общие случаи использования

  1. Управление проектами

    • Описания задач
    • Требования к проекту
    • Заметки о встречах
    • Обновления статуса
  2. Поддержка клиентов

    • Описания проблем
    • Заметки о решениях
    • Отзывы клиентов
    • Журналы коммуникации
  3. Управление контентом

    • Содержимое статей
    • Описания продуктов
    • Комментарии пользователей
    • Подробности отзывов
  4. Документация

    • Описания процессов
    • Инструкции
    • Рекомендации
    • Справочные материалы

Интеграционные функции

С автоматизацией

  • Запуск действий при изменении текстового содержимого
  • Извлечение ключевых слов из текстового содержимого
  • Создание резюме или уведомлений
  • Обработка текстового содержимого с помощью внешних сервисов

С справочниками

  • Ссылка на текстовые данные из других записей
  • Агрегация текстового содержимого из нескольких источников
  • Поиск записей по текстовому содержимому
  • Отображение связанной текстовой информации

С формами

  • Автоматическое удаление пробелов
  • Проверка обязательных полей
  • Интерфейс многострочного текстового поля
  • Отображение количества символов (если настроено)

Ограничения

  • Нет встроенного форматирования текста или редактирования с помощью расширенного текста
  • Нет автоматического обнаружения или преобразования ссылок
  • Нет проверки орфографии или грамматики
  • Нет встроенного анализа или обработки текста
  • Нет версионирования или отслеживания изменений
  • Ограниченные возможности поиска (нет полнотекстового поиска)
  • Нет сжатия содержимого для очень большого текста

Связанные ресурсы

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия