Mam model o nazwie User, ale Sequelize szuka tabeli USERS za każdym razem, gdy próbuję zapisać w bazie danych. Czy ktoś wie, jak ustawić Sequelize, aby używał pojedynczych nazw tabel? Dzięki.
109
Mam model o nazwie User, ale Sequelize szuka tabeli USERS za każdym razem, gdy próbuję zapisać w bazie danych. Czy ktoś wie, jak ustawić Sequelize, aby używał pojedynczych nazw tabel? Dzięki.
user
jest zarezerwowanym słowem, będziesz mieć mnóstwo problemów, jeśli naprawdę spróbujesz utworzyć tabelę o tej nazwie.user
nie jest słowem zastrzeżonym, ale słowem kluczowym. Chociaż nie napotkasz problemu z używaniem go, dobrze jest go unikać. dev.mysql.com/doc/refman/5.5/en/keywords.htmlOdpowiedzi:
W Docs stwierdzać, że można korzystać z nieruchomości
freezeTableName
.Spójrz na ten przykład:
źródło
freezeTableName: true
nie działa w najnowszej wersji sequelize. Jakieś inne rozwiązanie?freezeTableName
jest to, że również zapobiega sqlz z lowercasing nazwy tabel i kolumn. Co oznacza, że później, kiedy ręcznie piszesz SQL, aby przekopać się przez dane, będziesz musiał radzić sobie z nazwami o różnej wielkości (cokolwiek to oznacza dla twojego dialektu). Na stronie pg oznacza to konieczność używania podwójnych cudzysłowów wokół każdej nazwy składającej się z różnych wielkości liter - fuj! Chciałbym móc zrezygnować z liczby mnogiej, ale zachować składanie wielkości liter ...define
matableName
opcję jawnego zastąpienia.freezeTableName: true
dodatkowomodelName: 'singularName'
Chociaż zaakceptowana odpowiedź jest poprawna, możesz to zrobić raz dla wszystkich tabel, zamiast robić to oddzielnie dla każdego z nich. Po prostu przekazujesz podobny obiekt opcji do konstruktora Sequelize, na przykład:
Teraz, kiedy definiujesz swoje encje, nie musisz określać
freezeTableName: true
:źródło
Jeśli potrzebujesz różnych nazw modeli dla definicji singuar i liczby mnogiej, możesz przekazać nazwę jako parametr w opcjach modelu.
Spójrz na ten przykład:
zwróci to „osobę” jako obiekt, gdy odpytywany jest pojedynczy rekord, oraz „people” jako tablicę, gdy pobieramy wiele rekordów.
źródło