Dokumentacja dla programistów

monday.storage

Budowa aplikacjiAplikacje monday.com
Aktualizacja 2025-10-23

Infrastruktura monday apps obejmuje trwały magazyn typu klucz-wartość. Deweloperzy mogą go używać do przechowywania danych bez tworzenia własnego zaplecza i utrzymywania własnej bazy danych. Umożliwia przechowywanie danych aplikacji zarówno na poziomie instancji, jak i globalnie. Do obsługi magazynu możesz użyć metody SDK monday.storage.

Poniższe limity dotyczą metod dostępnych zarówno na poziomie instancji, jak i globalnie:

  • Limit długości klucza: 256

  • Limit pamięci na klucz: 6 MB

Metody

Wszystkie metody zwracają obiekt Promise, który zostanie rozstrzygnięty z odpowiedzią Storage API.

Metoda Opis
monday.storage.instance.getItem(key, options) Zwraca wartość zapisaną w bazie danych pod kluczem key dla konkretnej instancji
monday.storage.instance.setItem(key, value, options) Zapisuje wartość value w bazie danych pod kluczem key dla konkretnej instancji
monday.storage.instance.deleteItem(key, options) Usuwa wartość zapisaną w bazie danych pod kluczem key dla konkretnej instancji
monday.storage.getItem(key, options) Zwraca wartość zapisaną w bazie danych pod kluczem key
monday.storage.setItem(key, value, options) Zapisuje wartość value w bazie danych pod kluczem key
monday.storage.deleteItem(key, options) Usuwa wartość zapisaną w bazie danych pod kluczem key

Poziom instancji

W przypadku magazynu na poziomie instancji każda instancja aplikacji (czyli pojedynczy widok tablicy lub widżet pulpitu) ma własny magazyn. Aplikacje nie mogą współdzielić magazynu między kontami ani między aplikacjami zainstalowanymi w tej samej lokalizacji. Magazyn na poziomie instancji nie działa dla wszystkich typów funkcji aplikacji - jest dostępny tylko dla tych, które mają instancje.

Magazyn jest resetowany przy każdej nowej wersji głównej, ponieważ każda wersja ma własne instancje, a zarządzanie magazynem odbywa się po stronie serwera. Magazyn na poziomie instancji jest też odizolowany na podstawie wartości accountId, app i instance.

Wersjonowanie

Może się zdarzyć, że kilku użytkowników będzie pracować na tej samej instancji aplikacji i jednocześnie, bez synchronizacji, zapisywać dane pod tym samym kluczem. Jeśli zapisujesz pod tym kluczem złożoną strukturę danych, na przykład JSON, takie operacje mogą nadpisywać się nawzajem.

Metody getItem i setItem zwracają identyfikator wersji, który pozwala określić, jaka wartość jest obecnie zapisana pod danym kluczem. Za każdym razem, gdy zapis zmienia wartość, identyfikator wersji w bazie danych również się zmienia. Identyfikator informuje, czy wartość została zmieniona w innym miejscu, i zapobiega jej nadpisaniu.

Przykłady

Poniższe przykłady pokazują, jak używać metody monday.storage do obsługi bazy danych na poziomie instancji.

Wersjonowanie

Żądanie

monday.storage.instance.getItem('serialKey').then(res => {
 const { value, version } = res.data;
 sleep(10000); // someone may overwrite serialKey during this time

 monday.storage.instance.setItem('serialKey', { previous_version: version }).then(res => {
  console.log(res);
 }
});

Odpowiedź

{
    "method": "storage",
    "data": {
        "success": false,
        "error": "Version mismatch: key myKeyName was updated from another context and versioning is enabled"
    },
    "requestId": "123456"
}

Ustawianie nowej wartości

Żądanie

monday.storage.instance.setItem('mykey', 'Lorem Ipsum').then(res => {
 console.log(res);
});
// => { "success": true }

Odpowiedź

{
  "method" : "storage",
  "data" : {
    "success" : true,
    "version" : "465cc"
  },
  "requestId" : "123456"
}

Pobieranie wartości

Żądanie

monday.storage.instance.getItem('mykey').then(res => {
  console.log(res.data.value);
});
// => 'Lorem Ipsum'

Odpowiedź

{
  "method" : "storage",
  "data" : {
    "value" : "Lorem Ipsum", 
    "version" : "465cc",
    "success" : true
  },
  "requestId" : "123456"
}

Usuwanie elementu

Żądanie

monday.storage.instance.deleteItem('mykey').then(res => {
  console.log(res.data);
}

Odpowiedź

{
  "method" : "storage",
  "data" : {
    "value" : null,
    "success" : true
  },
  "requestId" : "123456"
}

Poziom globalny

W przypadku magazynu globalnego każda aplikacja ma własny magazyn, który jest współdzielony we wszystkich jej użyciach. W przeciwieństwie do metod dostępnych na poziomie instancji magazyn nie jest powiązany z konkretną instancją. Nie jest resetowany przy zmianie wersji głównej, ponieważ jest współdzielony w całej aplikacji, a nie tylko w jednej instancji.

To deweloperzy, a nie monday, zarządzają sposobem przechowywania elementów po stronie klienta. W magazynie na poziomie instancji dodajemy instancję jako dodatkową warstwę izolacji, ale magazyn globalny jej nie ma. Jest on odizolowany na podstawie wartości accountId i app, dlatego dane z jednego konta nie są dostępne z innych kont.

Wersjonowanie

Podobnie jak magazyn na poziomie instancji, magazyn globalny również obsługuje wersje.

Metody getItem i setItem zwracają identyfikator wersji, który pozwala określić, jaka wartość jest obecnie zapisana pod danym kluczem. Za każdym razem, gdy zapis zmienia wartość, identyfikator wersji w bazie danych również się zmienia. Identyfikator informuje, czy wartość została zmieniona w innym miejscu, i zapobiega jej nadpisaniu.

Przykłady

Poniższe przykłady pokazują, jak używać metody monday.storage do globalnej obsługi bazy danych.

Wersjonowanie

Żądanie

monday.storage.getItem('serialKey').then(res => {
 const { value, version } = res.data;
 sleep(10000); // someone may overwrite serialKey during this time

 monday.storage.setItem('serialKey', { previous_version: version }).then(res => {
  console.log(res);
 }
});

Ustawianie nowej wartości

Żądanie

monday.storage.setItem('mykey', 'Lorem Ipsum').then(res => {
 console.log(res);
});

Pobieranie wartości

Żądanie

monday.storage.getItem('mykey').then(res => {
  console.log(res.data.value);
});

Wyszukiwanie wartości

Żądanie

monday.storage.searchItem('mykey').then(res => {
  console.log(res.data);
}

Usuwanie elementu

Żądanie

monday.storage.deleteItem('mykey').then(res => {
  console.log(res.data);
}

📘 Dołącz do społeczności deweloperów!

Stworzyliśmy społeczność dla deweloperów. Możesz przeszukiwać wcześniejsze dyskusje, aby znaleźć rozwiązania, zadawać pytania, poznawać nowe funkcje i aktualizacje, a także uczyć się wskazówek i trików od innych deweloperów. Dołącz do nas! 😎