Przepisuję projekt, aby użyć Node.js. Chciałbym nadal używać MySQL jako bazy danych (nawet jeśli nie mam nic przeciwko przepisywaniu schematu). Szukam prostej w obsłudze, rozsądnej wydajności ORM, która obsługuje buforowanie, relacje „jeden do jednego” i „wiele do wielu”. Z MySQL ORM, które udało mi się znaleźć, persistencejs i sequelize wydają się najbardziej dojrzałe. Czy masz doświadczenie z którymkolwiek z nich? Jakie są istotne zalety i wady, o których powinienem wiedzieć w swojej decyzji?
326
Odpowiedzi:
Czy mogę zasugerować Node ORM?
https://github.com/dresende/node-orm2
Dokumentacja na temat pliku Readme obsługuje MySQL, PostgreSQL i SQLite.
MongoDB jest dostępny od wersji 2.1.x (wydanej w lipcu 2013)
AKTUALIZACJA: Ten pakiet nie jest już obsługiwany, zgodnie z README projektu. Zamiast tego zaleca półkę na książki i kontynuowanie
źródło
Wybrałbym Sequelize ze względu na jego doskonała dokumentacja. To tylko uczciwa opinia (nigdy tak naprawdę nie korzystałem z MySQL z Node).
źródło
Po pierwsze, proszę zauważyć, że nie użyłem żadnego z nich (ale użyłem Node.js).
Obie biblioteki są dość dobrze udokumentowane i mają stabilny interfejs API. Jednak trwały.js wydaje się być wykorzystywany w większej liczbie projektów . Nie wiem jednak, czy wszyscy nadal go używają.
Twórca sequelize czasami bloguje o tym na blog.depold.com . Jeśli chcesz używać kluczy podstawowych jako kluczy obcych, potrzebujesz poprawki opisanej w tym poście na blogu . Jeśli potrzebujesz pomocy na temat persistence.js, jest poświęcona temu grupa google.
Z zebranych przykładów wynika, że sekwencjonowanie jest nieco bardziej podobne do JavaScript (więcej cukru) niż persistance.js, ale obsługuje mniej magazynów danych (tylko MySQL, podczas gdy persistance.js może nawet korzystać ze sklepów w przeglądarce).
Myślę, że sekwencjonowanie może być dla ciebie dobrym rozwiązaniem, ponieważ potrzebujesz jedynie wsparcia MySQL. Jeśli jednak potrzebujesz wygodnych funkcji (na przykład wyszukiwania) lub później chcesz użyć innej bazy danych, musisz użyć pliku persistence.js.
źródło
Jedną z głównych różnic między Sequelize i Persistence.js jest to, że ta pierwsza obsługuje
STRING
typ danych, tjVARCHAR(255)
. Czułam się naprawdę nieswojo, robiąc wszystkoTEXT
.źródło