Tworzenie pól tekstowych wieloliniowych dla dłuższych treści, takich jak opisy, notatki i komentarze


Pola niestandardowe tekstu wieloliniowego pozwalają na przechowywanie dłuższych treści tekstowych z łamaniem linii i formatowaniem. Są idealne do opisów, notatek, komentarzy lub wszelkich danych tekstowych, które wymagają wielu linii.

Podstawowy przykład

Utwórz proste pole tekstowe wieloliniowe:

mutation CreateTextMultiField($projectId: String!) {
  createCustomField(
    projectId: $projectId
    input: {
      name: "Description"
      type: TEXT_MULTI
    }
  ) {
    id
    name
    type
  }
}

Zaawansowany przykład

Utwórz pole tekstowe wieloliniowe z opisem:

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
  }
}

Parametry wejściowe

CreateCustomFieldInput

Parametr Typ Wymagane Opis
name String! ✅ Tak Nazwa wyświetlana pola tekstowego
type CustomFieldType! ✅ Tak Musi być TEXT_MULTI
description String Nie Tekst pomocniczy wyświetlany użytkownikom

Uwaga: projectId jest przekazywane jako osobny argument do mutacji, a nie jako część obiektu wejściowego. Alternatywnie, kontekst projektu można określić z nagłówka X-Bloo-Project-ID w żądaniu GraphQL.

Ustawianie wartości tekstowych

Aby ustawić lub zaktualizować wartość tekstu wieloliniowego w rekordzie:

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."
  })
}

Parametry SetTodoCustomFieldInput

Parametr Typ Wymagane Opis
todoId String! ✅ Tak ID rekordu do zaktualizowania
customFieldId String! ✅ Tak ID pola tekstowego niestandardowego
text String Nie Treść tekstu wieloliniowego do przechowania

Tworzenie rekordów z wartościami tekstowymi

Podczas tworzenia nowego rekordu z wartościami tekstu wieloliniowego:

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
    }
  }
}

Pola odpowiedzi

Odpowiedź TodoCustomField

Pole Typ Opis
id String! Unikalny identyfikator wartości pola
customField CustomField! Definicja pola niestandardowego
text String Przechowywana treść tekstu wieloliniowego
todo Todo! Rekord, do którego należy ta wartość
createdAt DateTime! Kiedy wartość została utworzona
updatedAt DateTime! Kiedy wartość została ostatnio zmodyfikowana

Walidacja tekstu

Walidacja formularza

Gdy pola tekstowe wieloliniowe są używane w formularzach:

  • Wiodące i końcowe białe znaki są automatycznie usuwane
  • Walidacja wymagana jest stosowana, jeśli pole jest oznaczone jako wymagane
  • Nie stosuje się żadnej specyficznej walidacji formatu

Zasady walidacji

  • Akceptuje dowolną treść tekstową, w tym łamanie linii
  • Brak ograniczeń długości znaków (do limitów bazy danych)
  • Obsługuje znaki Unicode i symbole specjalne
  • Łamanie linii jest zachowywane w przechowywaniu

Przykłady poprawnego tekstu

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";
}

Ważne uwagi

Pojemność przechowywania

  • Przechowywane przy użyciu typu MySQL MediumText
  • Obsługuje do 16 MB treści tekstowej
  • Łamanie linii i formatowanie są zachowywane
  • Kodowanie UTF-8 dla znaków międzynarodowych

API bezpośrednie vs formularze

  • Formularze: Automatyczne usuwanie białych znaków i walidacja wymagana
  • API bezpośrednie: Tekst jest przechowywany dokładnie tak, jak podano
  • Zalecenie: Używaj formularzy do wprowadzania danych przez użytkowników, aby zapewnić spójne formatowanie

TEXT_MULTI vs TEXT_SINGLE

  • TEXT_MULTI: Wprowadzenie tekstu wieloliniowego, idealne do dłuższych treści
  • TEXT_SINGLE: Wprowadzenie tekstu jednoliniowego, idealne do krótkich wartości
  • Backend: Oba typy są identyczne - to samo pole przechowywania, walidacja i przetwarzanie
  • Frontend: Różne komponenty UI do wprowadzania danych (textarea vs pole wejściowe)
  • Ważne: Rozróżnienie między TEXT_MULTI a TEXT_SINGLE istnieje wyłącznie w celach UI

Wymagane uprawnienia

Akcja Wymagane uprawnienie
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

Odpowiedzi błędów

Walidacja pola wymaganego (tylko formularze)

{
  "errors": [{
    "message": "This field is required",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

Pole nie znalezione

{
  "errors": [{
    "message": "Custom field not found",
    "extensions": {
      "code": "CUSTOM_FIELD_NOT_FOUND"
    }
  }]
}

Najlepsze praktyki

Organizacja treści

  • Używaj spójnego formatowania dla zorganizowanej treści
  • Rozważ użycie składni podobnej do markdown dla czytelności
  • Dziel długie treści na logiczne sekcje
  • Używaj łamania linii, aby poprawić czytelność

Wprowadzanie danych

  • Podaj jasne opisy pól, aby prowadzić użytkowników
  • Używaj formularzy do wprowadzania danych przez użytkowników, aby zapewnić walidację
  • Rozważ ograniczenia znaków w zależności od przypadku użycia
  • Waliduj format treści w swojej aplikacji, jeśli to konieczne

Rozważania dotyczące wydajności

  • Bardzo długie treści tekstowe mogą wpływać na wydajność zapytań
  • Rozważ paginację do wyświetlania dużych pól tekstowych
  • Rozważania dotyczące indeksowania dla funkcjonalności wyszukiwania
  • Monitoruj wykorzystanie pamięci dla pól z dużą zawartością

Filtrowanie i wyszukiwanie

Wyszukiwanie zawierające

Pola tekstowe wieloliniowe obsługują wyszukiwanie podciągów za pomocą filtrów pól niestandardowych:

query SearchTextMulti {
  todos(
    customFieldFilters: [{
      customFieldId: "text_multi_field_id"
      operation: CONTAINS
      value: "project"
    }]
  ) {
    id
    title
    customFields {
      customField {
        name
        type
      }
      text
    }
  }
}

Możliwości wyszukiwania

  • Dopasowanie podciągu w polach tekstowych przy użyciu operatora CONTAINS
  • Wyszukiwanie bez uwzględnienia wielkości liter przy użyciu operatora NCONTAINS
  • Dokładne dopasowanie przy użyciu operatora IS
  • Dopasowanie negatywne przy użyciu operatora NOT
  • Wyszukiwanie w obrębie wszystkich linii tekstu
  • Obsługuje częściowe dopasowanie słów

Typowe przypadki użycia

  1. Zarządzanie projektami

    • Opisy zadań
    • Wymagania projektowe
    • Notatki ze spotkań
    • Aktualizacje statusu
  2. Wsparcie klienta

    • Opisy problemów
    • Notatki dotyczące rozwiązań
    • Opinie klientów
    • Dzienniki komunikacji
  3. Zarządzanie treścią

    • Treść artykułów
    • Opisy produktów
    • Komentarze użytkowników
    • Szczegóły recenzji
  4. Dokumentacja

    • Opisy procesów
    • Instrukcje
    • Wytyczne
    • Materiały referencyjne

Funkcje integracji

Z automatyzacjami

  • Wyzwalaj akcje, gdy treść tekstowa się zmienia
  • Ekstrahuj słowa kluczowe z treści tekstowej
  • Twórz podsumowania lub powiadomienia
  • Przetwarzaj treść tekstową za pomocą usług zewnętrznych

Z wyszukiwaniami

  • Odwołuj się do danych tekstowych z innych rekordów
  • Agreguj treści tekstowe z wielu źródeł
  • Znajduj rekordy według treści tekstowej
  • Wyświetlaj powiązane informacje tekstowe

Z formularzami

  • Automatyczne usuwanie białych znaków
  • Walidacja pól wymaganych
  • UI dla wieloliniowego pola tekstowego
  • Wyświetlanie liczby znaków (jeśli skonfigurowane)

Ograniczenia

  • Brak wbudowanego formatowania tekstu lub edytora tekstu bogatego
  • Brak automatycznego wykrywania lub konwersji linków
  • Brak sprawdzania pisowni lub walidacji gramatycznej
  • Brak wbudowanej analizy lub przetwarzania tekstu
  • Brak wersjonowania lub śledzenia zmian
  • Ograniczone możliwości wyszukiwania (brak pełnotekstowego wyszukiwania)
  • Brak kompresji treści dla bardzo dużego tekstu

Powiązane zasoby

Asystent AI

Odpowiedzi są generowane przy użyciu sztucznej inteligencji i mogą zawierać błędy.

Jak mogę Ci pomóc?

Zapytaj mnie o cokolwiek dotyczącego Blue lub tej dokumentacji.

Wciśnij Enter, aby wysłać • Shift+Enter, aby dodać nową linię • ⌘I, aby otworzyć