Release Notes für TypeORM 1.0
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
TypeORM 1.0 ist ein großes Release, das lange als veraltet markierte APIs entfernt, Plattformanforderungen modernisiert und Dutzende Fehlerbehebungen sowie neue Funktionen aus dem 0.3.x-Zyklus enthält.
Breaking Changes
Detaillierte Upgrade-Anleitungen findest du in der Migrationsanleitung.
Plattformanforderungen
-
Node.js 20+ erforderlich — Unterstützung für Node.js 16 und 18 wurde eingestellt, das JavaScript-Mindestziel ist nun ES2023 (#11382 von @alumni)
-
Buffer-Polyfill entfernt — Für Binärdaten auf Nicht-Node-Plattformen wird nunUint8Arrayverwendet; Node.jsBuffer(dasUint8Arrayerweitert) funktioniert wie zuvor (#11935 von @pujux) -
Glob-Bibliothek ersetzt —
globwurde durchtinyglobbyersetzt undrimrafentfernt, was weniger Abhängigkeiten bedeutet (#11699 von @alumni) -
Hashing in natives
cryptoverschoben — Die Paketesha.jsunduuidwurden durch das nativecrypto-Modul undcrypto.randomUUID()ersetzt (#11864 von @G0maa, #11769 von @mag123c)
Treiberänderungen
-
MySQL / MariaDB:
mysql-Paket entfernt — Nurmysql2wird unterstützt; Die OptionconnectorPackagewurde entfernt (#11766 von @pkuczynski) -
MySQL:
legacySpatialSupportstandardmäßigfalse— StandardfunktionenST_GeomFromText/ST_AsTextwerden nun verwendet (#12083 von @pkuczynski) -
MySQL:
width- undzerofill-Spaltenoptionen entfernt — Diese wurden in MySQL 8.0.17 als veraltet markiert und in MySQL 8.4 entfernt (#12084 von @pkuczynski) -
SQLite:
sqlite3entfernt,better-sqlite3ist Standard — Dassqlite3-Paket wird nicht mehr unterstützt; Die OptionenflagsundbusyTimeoutwurden entfernt (#11836 von @pkuczynski) -
MongoDB: Treiber v7+ erforderlich — Unterstützung für MongoDB Node.js-Treiber v5/v6 wurde eingestellt;
stats()-Methode entfernt; Veraltete Verbindungsoptionen entfernt; Interne Typen werden nicht mehr exportiert (#12208 von @naorpeled, #12179 von @pkuczynski, #12120 von @pkuczynski, #12037 von @alumni) -
MS SQL Server:
domain-Verbindungsoption entfernt — verwende stattdessenauthenticationmit NTLM-Typ (#12135 von @pkuczynski) -
SAP HANA: Veraltete Verbindungsaliase entfernt —
hanaClientDriver,pool.max,pool.requestTimeout,pool.idleTimeoutund andere wurden zugunsten ihrer modernen Entsprechungen entfernt (#12080 von @gioboa) -
Expo: Legacy-Treiber entfernt — Der veraltete Expo SQLite-Treiber wurde entfernt; verwende Expo SDK v52+ mit der modernen Async-API (#11860 von @G0maa)
-
Redis: Legacy-Client-Support entfernt — Nur der moderne Redis-Client (v4+) wird für das Caching von Abfrageergebnissen unterstützt (#12057 von @G0maa)
Entfernte APIs
-
ConnectionundConnectionOptionsentfernt — verwende stattdessenDataSourceundDataSourceOptions(#12022 von @alumni) -
ConnectionManagerund globale Hilfsfunktionen entfernt —createConnection,getConnection,getManager,getRepository,createQueryBuilderund andere globale Funktionen wurden entfernt (#12098 von @michaelbromley) -
Globale Funktionen
getMongoRepositoryundgetMongoManagerentfernt — verwende stattdessendataSource.getMongoRepository()unddataSource.mongoManager(#12099 von @pkuczynski) -
DataSource.nameentfernt — Benannte Verbindungen waren seit v0.3 veraltet;ConnectionOptionsReader.all()wurde inget()umbenannt (#12136 von @pkuczynski) -
Unterstützung für
TYPEORM_*-Umgebungsvariablen entfernt —ConnectionOptionsEnvReader,ormconfig.envund automatischesdotenv-Laden wurden entfernt (#12134 von @pkuczynski) -
findByIdsentfernt — verwende stattdessenfindBymit demIn-Operator (#12114 von @pkuczynski) -
Repository.exist()entfernt — verwende stattdessenRepository.exists()(#12131 von @pkuczynski) -
AbstractRepository,@EntityRepositoryundgetCustomRepositoryentfernt — verwende stattdessenRepository.extend()(#12096 von @pkuczynski) -
@RelationCount-Dekorator entfernt — verwende stattdessen@VirtualColumnmit einer Subquery (#12181 von @pkuczynski) -
IoC-Containersystem entfernt —
useContainer(),getFromContainer()und zugehörige Typen wurden entfernt (#12180 von @pkuczynski) -
readonly-Spaltenoption entfernt — verwende stattdessenupdate: false(#12132 von @pkuczynski) -
unsignedbeiColumnNumericOptionsentfernt — betrifft nur Decimal-/Float-Typen;unsignedfür Integer bleibt unverändert (#12133 von @pkuczynski) -
QueryBuilder:
onConflict(), veralteteorUpdate()-Überladung undsetNativeParameters()entfernt — verwende stattdessenorIgnore()/orUpdate()mit Array-Signatur undsetParameters()(#12090 von @pkuczynski) -
QueryBuilder:
printSql()inlogQuery()umbenannt (#12151 von @naorpeled) -
QueryBuilder:
WhereExpression-Typalias entfernt — verwende stattdessenWhereExpressionBuilder(#12097 von @pkuczynski) -
QueryBuilder:
replacePropertyNames()entfernt — es war eine No-Op-Funktion (#12178 von @pkuczynski) -
Veraltete Sperrmodi entfernt —
pessimistic_partial_writeundpessimistic_write_or_failwurden durchpessimistic_writemitonLocked-Option ersetzt (#12093 von @pkuczynski) -
QueryRunner.loadedTablesundloadedViewsentfernt — verwende stattdessengetTables()undgetViews()(#12183 von @pkuczynski) -
MigrationExecutor.getAllMigrations()entfernt — verwende stattdessengetPendingMigrations(),getExecutedMigrations()oderdataSource.migrations(#12142 von @pkuczynski) -
Statische Methode
EntityMetadata.createPropertyPath()entfernt — interne Hilfsfunktion ohne öffentlichen Ersatz (#12141 von @pkuczynski) -
Interne
nativeParameters-Verbindung entfernt aus Treibern und Query Buildern (#12104 von @pkuczynski) -
Interne Funktion
broadcastLoadEventsForAll()entfernt aus Broadcaster (#12137 von @pkuczynski) -
Interne Funktion
DriverUtils.buildColumnAlias()entfernt — verwende stattdessenbuildAlias()(#12138 von @pkuczynski)
Verhaltensänderungen
-
invalidWhereValuesBehaviorstandardmäßig aufthrow— Übergabe vonnulloderundefinedin WHERE-Bedingungen löst jetzt einen Fehler aus statt die Eigenschaft stillschweigend zu ignorieren; verwendeIsNull()für Null-Matching (#11710 von @naorpeled) -
invalidWhereValuesBehaviornur für High-Level-APIs — QueryBuilders.where(),.andWhere()und.orWhere()sind nicht mehr von dieser Einstellung betroffen (#11878 von @naorpeled)
Neue Funktionen
Query Builder
-
INSERT INTO ... SELECT FROM ...— NeuevaluesFromSelect()-Methode fürInsertQueryBuilderzur Datenmigration und Transformationsabfragen (#11896 von @Cprakhar) -
returning-Option für Update/Upsert — Repository- und Entity-Manager-update()- undupsert()-Methoden unterstützen jetztreturningauf Datenbanken mitRETURNING-Klauseln (#11782 von @naorpeled) -
ifExists-Parameter für alle Drop-Methoden —dropColumn,dropIndex,dropPrimaryKey,dropForeignKey,dropUniqueConstraint,dropCheckConstraint,dropExclusionConstraintund ihre Pluralvarianten akzeptieren jetzt einifExists-Flag (#12121 von @pkuczynski) -
Explizites Ressourcenmanagement für
QueryRunner— Unterstütztawait using-Syntax (TypeScript 5.2+) zur automatischen Bereinigung (#11701 von @alumni)
Treiber
-
PostgreSQL:
ADD VALUEfür Enum-Änderungen — Beim Hinzufügen neuer Enum-Werte verwendet TypeORM jetzt die einfachereALTER TYPE ... ADD VALUE-Syntax statt des 4-stufigen Umbenennen-Erstellen-Migrieren-Löschen-Ansatzes, wo möglich (#10956 von @janzipek) -
PostgreSQL: Zusätzliche Erweiterungen — Neue
installExtensions-Option zur Installation zusätzlicher PostgreSQL-Erweiterungen während der Verbindungseinrichtung (#11888 von @Cprakhar) -
PostgreSQL: Unterstützung partieller Indizes — Fügt Unterstützung für PostgreSQL partielle Indizes hinzu (#11318 von @freePixel)
-
SAP HANA: Sperren in SELECT —
FOR UPDATEund andere Sperrmodi werden jetzt in SAP HANA-Abfragen unterstützt (#11996 von @alumni) -
SAP HANA: Tabellenkommentare —
@Entity({ comment: "..." })funktioniert jetzt mit SAP HANA (#11939 von @Cprakhar) -
SAP HANA: Pool-Timeout — Neue
maxWaitTimeoutIfPoolExhausted-Option für Connection-Pools (#11868 von @alumni) -
SQLite:
jsonb-Spaltentyp — SQLite unterstützt jetzt denjsonb-Spaltentyp (#11933 von @Cprakhar) -
React Native: Verschlüsselungsschlüssel — Neue Option zum Übergeben eines Verschlüsselungsschlüssels für React Native SQLite-Datenbanken (#11736 von @HtSpChakradharCholleti)
Persistenz & Upsert
-
Kaskadierendes Trunkieren in
clear()—Repository.clear()undEntityManager.clear()akzeptieren jetzt{ cascade: true }, umTRUNCATE ... CASCADEauf PostgreSQL, CockroachDB und Oracle auszuführen (#11866 von @Cprakhar) -
Verbesserte Typisierung für
increment/decrement— Der Bedingungsparameter verwendet jetzt typsichere Entity-Typen stattany(#11294 von @OSA413)
Spaltentypen & Dekoratoren
- Deferrierbare Unterstützung für
@Exclusion— Ergänzt die bestehende deferrierbare Unterstützung von@Uniqueund@Index(#11802 von @oGAD31)
Andere Änderungen
- Verbesserte Fehlerbehandlung für ormconfig — Fehler beim Laden protokollieren jetzt Warnungen statt stillschweigend zu scheitern (#11871 von @Cprakhar)
Fehlerbehebungen
Abfragegenerierung
-
Spaltenalias in
orderBykorrekt maskiert — Verhindert SQL-Fehler bei Namenskonflikten mit reservierten Wörtern (#12027 von @Cprakhar) -
addOrderBylöst Datenbankspaltennamen auf — Die Verwendung des Datenbank-Spaltennamens (z.B.created_at) statt des Eigenschaftsnamens funktioniert jetzt korrekt (#11904 von @smith-xyz) -
Sortierung von Subquery-Spalten — Behobener Fehler "Cannot get metadata for given alias" bei Sortierung nach Subquery-Spalten (#11343 von @trannhan0810)
-
Reihenfolge von
select-Spalten erhalten —getQuery()/getSql()gibt Spalten jetzt in der durchselect()undaddSelect()festgelegten Reihenfolge zurück (#11902 von @Cprakhar) -
.update()-Abfragegenerierung korrigiert — Behobene fehlerhafte SQL-Generierung bei Verwendung von QueryBuilder.update()(#11993 von @gioboa) -
Upsert-SQL-Generierung mit Tabellenalias — Behobene fehlerhafte Spaltenreferenzen in Upsert-Abfragen mit Tabellenvererbung und benutzerdefinierten Schemata (#11915 von @Cprakhar)
-
Limit mit Joins — Behobene falsche Ergebnisse bei Verwendung von
skip/take-Paginierung mit Joins (#11987 von @gioboa) -
Join-Attribute in Klammern — behoben das Parsen von Joins bei Bedingungen mit Klammern (#11218 von @balkrushna)
-
Globale
ORDER BYfür Aggregatfunktionen deaktiviert —repo.max(),repo.min()etc. erzeugen kein ungültiges SQL mehr mitORDER BY-Klauseln (#11925 von @Cprakhar) -
Subqueries für Paginierung enthalten PKs verknüpfter Entitäten —
leftJoinmitskip/takelädt verknüpfte Entitäten nun korrekt (#11669 von @mag123c) -
Aliaskürzung mit camelCase — die
shorten-Methode verarbeitetcamelCase_aliasesnun korrekt (#11283 von @OSA413)
Beziehungen & Eager Loading
-
Aliaskollision bei selbstreferenziellen Beziehungen — selbstreferenzielle Beziehungen mit
relationLoadStrategy: "query"erzeugen durch Aliaskollision kein fehlerhaftes SQL mehr (#11066 von @campmarc) -
Eager-Beziehungen nicht doppelt gejoined — explizites Angeben von Eager-Beziehungen in
relationsverursacht keine doppelten JOINs mehr (#11991 von @veeceey) -
Speichern mit eager-geladenen Beziehungen — behoben Fehler beim Speichern von Entitäten mit eager-geladenen Beziehungen (#11975 von @gioboa)
-
Spalten mit
select: falsenicht mehr zurückgegeben — alsselect: falsemarkierte Spalten werden korrekt aus Abfrageergebnissen ausgeschlossen (#11944 von @gioboa) -
Subqueries mit
joinMapOne-Methoden — behoben fehlerhaftes Verhalten bei Verwendung von Join-Map-Methoden (#11943 von @gioboa) -
Beziehungs-IDs in verschachtelten eingebetteten Entitäten — behoben
TypeError: Cannot set properties of undefinedbeim Mapping von Beziehungs-IDs in eingebetteten Entitäten (#11942 von @Cprakhar) -
Aliasbehandlung in
RelationIdLoader— nutztDriverUtils.getAlias, um Alias-Kürzungen durch Datenbanken mit kurzen Bezeichnerlimits zu verhindern (#11228 von @te1) -
*-to-manyincreatePropertyPath— entfernte fehlerhafte Fehlerbehandlung, die bestimmte Beziehungskonfigurationen blockierte (#11119 von @ThbltLmr)
Persistenz
-
Upsert mit
update: falseodergeneratedType— Upsert verarbeitet Spalten, die nicht aktualisiert werden sollen, nun korrekt (#12030 von @gioboa) -
Werttransformatoren für
FindOperator-Instanzen —ApplyValueTransformerstransformiert Werte inFindOperator-Instanzen wieIn,Betweenetc. nun korrekt (#11172 von @ZimGil) -
Soft-Deletion aktualisiert nicht mehr bereits gelöschte Zeilen —
softDeleteundsoftRemoveüberspringen jetzt Zeilen, die bereits soft-gelöscht wurden (#10705 von @hassanmehdi98) -
Entity-Merge berücksichtigt
null-Werte — Beim Zusammenführen in eine Entity werdennull-Eigenschaftswerte nicht mehr stillschweigend ignoriert (#11154 von @knoid) -
Map/Objekt-Vergleich — Fehlerhafte Änderungserkennung für Map- und Objekt-Spaltenwerte behoben (#10990 von @mgohin)
-
Datumstransformer-Änderungserkennung — Falsch-positive Dirty-Erkennung bei Datumstransformern behoben (#11963 von @gioboa)
-
Child-mpath-Aktualisierung — Der mpath von Baum-Entities wird nun korrekt aktualisiert, auch bei Neuzuordnung mit soft-gelöschten Eltern (#10844 von @JoseCToscano)
-
Handhabung virtueller Eigenschaften im Schema Builder — Der Schema Builder versucht nicht mehr, Spalten für virtuelle Eigenschaften zu erstellen (#11000 von @skyran1278)
-
Entfernen namenloser
TableForeignKey— Das Löschen eines Fremdschlüssels ohne expliziten Namen führt nicht mehr zu Fehlern (#10744 von @taichunmin) -
getPendingMigrationserstellt keine Migrationstabelle mehr — Die Überprüfung ausstehender Migrationen hat nun keine Nebeneffekte mehr (#11672 von @pkuczynski)
Driver-spezifische Korrekturen
-
PostgreSQL:
timestamptz-Persistenz/Hydration — Spalten vom Typtimestamp with time zonewerden nun korrekt gespeichert und hydriert (#11774 von @Minishlink) -
PostgreSQL: Geometrietypen-Neuspeicherung — Punkt-/Kreiswerte werden beim Speichern normalisiert, um Fehler beim erneuten Speichern hydrierter Objekte zu vermeiden (#11857 von @Cprakhar)
-
PostgreSQL/CockroachDB: Tabellen mit Anführungszeichen — Handhabung von Tabellen mit Sonderzeichen in Namen korrigiert (#10993 von @iskalyakin)
-
PostgreSQL: Sequentielle Abfrageausführung — Abfragen werden nun sequenziell auf derselben Verbindung ausgeführt, um
pg-Deprecation-Warnungen zu vermeiden (#12105 von @pkuczynski) -
MySQL: PolarDB-X 2.0-Versionserkennung —
getVersion()liefert für PolarDB-X 2.0 nicht mehrundefinedzurück (#11837 von @Missna) -
MongoDB:
ObjectIdColumn-Eigenschaftsnamensübersetzung —findOneBy({ id: value })übersetzt nun korrekt zu_idin MongoDB-Abfragen (#12200 von @pkuczynski) -
MongoDB: eingebettete Arrays verschachtelter Dokumente — verarbeitet korrekt eingebettete Arrays innerhalb verschachtelter Dokumentstrukturen (#10940 von @mciuchitu)
-
SQLite: simple-enum-Arrays —
simple-enum-Spalten mitarray: trueführen nicht mehr zu CHECK-Constraint-Fehlern (#11865 von @Cprakhar) -
SAP HANA: Escaping von
Date-Parametern — JS-Date-Werte werden nun als Query-Parameter übergeben statt in SQL-Strings eingebettet (#11867 von @alumni) -
CockroachDB: strukturierte Abfrageergebnisse bei Transaktionswiederholung — das
useStructuredResult-Flag bleibt während CockroachDB-Transaktionswiederholungen jetzt erhalten (#11861 von @naorpeled) -
Cordova: betroffene Zeilen in Queries — Abfrageergebnisse enthalten jetzt die Anzahl der betroffenen Zeilen (#10873 von @jacobg)
Andere Änderungen
-
CLI-Befehl
init— stürzt nicht mehr ab, wennpackage.jsonnicht existiert (#11947 von @gioboa) -
Deno
process-Import — korrigierter falscher Import für dieprocess-Abhängigkeit in Deno (#11248 von @yohannpoli)
Sicherheitskorrekturen
- SQL-Injection-Prävention — parametrisierte Queries und escapede Bezeichner werden jetzt in allen Treibern für Schema-Introspection und DDL-Methoden verwendet, was SQL-Injection über Datenbank-/Schema-/Tabellen-/Spaltennamen verhindert (#12207 von @pkuczynski, #12197 von @pkuczynski, #12185 von @pkuczynski)
Performance-Verbesserungen
- PostgreSQL / CockroachDB: gebündeltes DROP in
clearDatabase()— konsolidiert einzelne DROP-Befehle zu gebündelten Queries, was die Roundtrips während Test-Setups signifikant reduziert (#12164, #12159 von @pkuczynski)