Krótka odpowiedź brzmi: nie, o ile mi wiadomo, nie ma automatycznego generowania ORM dla redis lub MongoDB.
teraz do bardziej szczegółowego wyjaśnienia:
Powodem istnieje pokolenie CRUD na „stałe” ORM, a nie magazynów danych opartych na dokumentacji free-forma jest prosta: bardzo charakter zapisów free-form sprawia, że trudno aby utworzyć schemat.
Spójrzmy na przykład na redis, powiedzmy, że każdy rekord był hashem, np. key 'user- {id}' z polami username, age i registered_on. Co się dzieje, gdy dodajesz nowe pole "lokalizacja" do użytkowników? Cóż, redis to nie obchodzi, po prostu dodajesz pole do dowolnych rekordów, ponieważ są one modyfikowane, nie trzeba wracać i dodawać pola do każdego hasha. Wystarczająco proste.
Ale teraz masz magię CRUD, która próbuje dowiedzieć się, jakie pola pokazać. Powiedzmy, że decydujesz się na pierwszy rekord, aby zobaczyć, jakie pola działają, ale co, jeśli użytkownik-1 nie ma tego nowego pola "lokalizacja"? Teraz CRUD go nie wygeneruje.
Ponadto, ponieważ redis przechowuje każdą wartość jako ciąg znaków, CRUD nie będzie wiedział, że "wiek" na przykład akceptuje tylko liczbę całkowitą, a wartość zarejestrowana to w rzeczywistości ciąg daty w formacie ISO.
Och, ale mówisz, MongoDB ma typy danych! z pewnością, zakładając, że zignorujemy różne pola w przeliczeniu na rekordy, udając, że mamy ten sam zestaw pól w jednym rekordzie, możliwe jest wykonanie jakiegoś automagicznego CRUD? Cóż, tak, będziesz w stanie zrobić trochę lepiej niż z Redis, ponieważ istnieje np. typ daty i typ całkowity, ale istnieją nawet pewne rozbieżności. Powiedzmy, że masz wartość ciągu. Skąd wiadomo, że wartość tego łańcucha wymaga wejścia wieloliniowego (textarea) lub jednoliniowego (typ wejścia = tekst), czy jest dostępna tylko z rozwijanego menu wyboru kilku opcji?
Z tego powodu, jedynym sposobem na zrobienie teoretycznego CRUD dla wielu typów dowolnych byłoby zdefiniowanie z wyprzedzeniem "schematu" (poprzez definicję formularza może?) Dla każdego rekordu, a może zaimplementowane niektóre sortowanie klasy interfejsu/kontraktu, które pozwalało narzędziu CRUD na wyświetlanie listy rekordów w celu pobrania obiektów, pobranie pojedynczego rekordu za pomocą klucza, aktualizację/utworzenie rekordu i usunięcie pojedynczego rekordu za pomocą klucza.
Takie teoretyczne "wtykowe" narzędzie CRUD byłoby naprawdę fajne i bardzo bym chciała zobaczyć, jak ktoś go bierze.
To nie powinno być trudne, aby stworzyć pewne oprogramowanie, które ma w swoich dokumentach, a na jednej podstawie dokumentu, generuje klasę WTForm dla każdego dokumentu (będącego że każdy dokument może mieć różne zestawy danych na nich, nawet jeśli mają reprezentować podobne obiekty - elastyczność no-sql i wszystkich ...). Następnie można użyć planu w kolbie do zarejestrowania funkcji widoku, która pobierałaby obiekt, generowała formularz i wyświetlała formularz użytkownikowi. Introspekcja, jakiego rodzaju widgetu i walidacji potrzebujesz, byłaby trudną częścią, jak pokazuje poniżej odpowiedź. – tkone