Ich habe ein Modell namens User, aber Sequelize sucht nach der Tabelle USERS, wenn ich versuche, in der Datenbank zu speichern. Weiß jemand, wie man Sequelize so einstellt, dass einzelne Tabellennamen verwendet werden? Vielen Dank.
109
user
ist ein reserviertes Wort, Sie werden viele Probleme haben, wenn Sie wirklich versuchen, eine Tabelle mit diesem Namen zu erstellen.user
ist kein reserviertes Wort, sondern ein Schlüsselwort. Während Sie kein Problem bei der Verwendung haben, ist es gut, es zu vermeiden. dev.mysql.com/doc/refman/5.5/en/keywords.htmlAntworten:
In den Dokumenten wird angegeben, dass Sie die Eigenschaft verwenden können
freezeTableName
.Bitte schauen Sie sich dieses Beispiel an:
quelle
freezeTableName: true
funktioniert nicht in der neuesten Version von Sequelize. Irgendeine andere Lösung?freezeTableName
ist, dass es auch verhindert, dass sqlz Tabellen- und Spaltennamen in Kleinbuchstaben umwandelt. Das bedeutet, dass Sie später, wenn Sie SQL von Hand schreiben, um Daten zu durchsuchen, mit Namen in Groß- und Kleinschreibung umgehen müssen (was auch immer das für Ihren Dialekt bedeutet). Auf Seite bedeutet dies, dass für jeden Namen in Groß- und Kleinschreibung doppelte Anführungszeichen verwendet werden müssen - yuk! Ich wünschte, wir könnten die Pluralisierung ablehnen, aber die Fallfaltung beibehalten ...define
hat dietableName
Option für eine explizite Überschreibung.freezeTableName: true
zusätzlich zumodelName: 'singularName'
Während die akzeptierte Antwort korrekt ist, können Sie dies einmal für alle Tabellen tun, anstatt es für jede Tabelle separat tun zu müssen. Sie übergeben einfach ein ähnliches Optionsobjekt wie folgt an den Sequelize-Konstruktor:
Wenn Sie nun Ihre Entitäten definieren, müssen Sie nicht angeben
freezeTableName: true
:quelle