typeorm 0.3.29-dev.cc07c90 → 0.3.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/browser/cache/RedisQueryResultCache.d.ts +6 -9
- package/browser/cache/RedisQueryResultCache.js +21 -42
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/browser/driver/cockroachdb/CockroachDriver.js +13 -3
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +22 -16
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +18 -5
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +2 -2
- package/browser/driver/oracle/OracleDriver.js +8 -5
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
- package/browser/driver/postgres/PostgresDriver.js +18 -5
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +16 -10
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +4 -8
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +2 -2
- package/browser/driver/spanner/SpannerDriver.js +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +4 -2
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +3 -2
- package/browser/entity-manager/EntityManager.js +32 -18
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/error/QueryFailedError.js +1 -2
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/find-options/operator/JsonContains.d.ts +1 -1
- package/browser/find-options/operator/JsonContains.js.map +1 -1
- package/browser/index.d.ts +3 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +2 -0
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +11 -5
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +11 -5
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +3 -1
- package/browser/migration/MigrationExecutor.js +13 -3
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js +6 -2
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +3 -0
- package/browser/persistence/SubjectExecutor.js +11 -0
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +8 -0
- package/browser/query-builder/QueryBuilder.js +42 -24
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/ReturningOption.d.ts +4 -0
- package/browser/query-builder/ReturningOption.js +3 -0
- package/browser/query-builder/ReturningOption.js.map +1 -0
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -5
- package/browser/query-builder/SelectQueryBuilder.js +48 -54
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +17 -12
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +17 -12
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +2 -1
- package/browser/repository/BaseEntity.js +2 -2
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/Repository.d.ts +3 -2
- package/browser/repository/Repository.js +4 -4
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.js +2 -2
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/repository/UpdateOptions.d.ts +11 -0
- package/browser/repository/UpdateOptions.js +3 -0
- package/browser/repository/UpdateOptions.js.map +1 -0
- package/browser/repository/UpsertOptions.d.ts +6 -0
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +13 -0
- package/browser/util/OrmUtils.js +53 -0
- package/browser/util/OrmUtils.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +6 -9
- package/cache/RedisQueryResultCache.js +21 -42
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/MigrationRunCommand.js +4 -4
- package/commands/MigrationRunCommand.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/driver/cockroachdb/CockroachDriver.js +13 -3
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +22 -16
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +18 -5
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +2 -2
- package/driver/oracle/OracleDriver.js +8 -5
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +2 -2
- package/driver/postgres/PostgresDriver.js +18 -5
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +16 -10
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/driver/sap/SapConnectionOptions.js.map +1 -1
- package/driver/sap/SapDriver.js +4 -8
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +2 -2
- package/driver/spanner/SpannerDriver.js +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +4 -2
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +3 -2
- package/entity-manager/EntityManager.js +32 -18
- package/entity-manager/EntityManager.js.map +1 -1
- package/error/QueryFailedError.js +1 -2
- package/error/QueryFailedError.js.map +1 -1
- package/find-options/operator/JsonContains.d.ts +1 -1
- package/find-options/operator/JsonContains.js.map +1 -1
- package/index.d.ts +3 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +2 -0
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.d.ts +11 -5
- package/metadata-builder/RelationJoinColumnBuilder.js +11 -5
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +3 -1
- package/migration/MigrationExecutor.js +13 -3
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +278 -1
- package/persistence/SubjectChangedColumnsComputer.js +6 -2
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectExecutor.d.ts +3 -0
- package/persistence/SubjectExecutor.js +11 -0
- package/persistence/SubjectExecutor.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +8 -0
- package/query-builder/QueryBuilder.js +42 -24
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/ReturningOption.d.ts +4 -0
- package/query-builder/ReturningOption.js +4 -0
- package/query-builder/ReturningOption.js.map +1 -0
- package/query-builder/SelectQueryBuilder.d.ts +1 -5
- package/query-builder/SelectQueryBuilder.js +48 -54
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +17 -12
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +17 -12
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/repository/BaseEntity.d.ts +2 -1
- package/repository/BaseEntity.js +2 -2
- package/repository/BaseEntity.js.map +1 -1
- package/repository/Repository.d.ts +3 -2
- package/repository/Repository.js +4 -4
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.js +2 -2
- package/repository/TreeRepository.js.map +1 -1
- package/repository/UpdateOptions.d.ts +11 -0
- package/repository/UpdateOptions.js +4 -0
- package/repository/UpdateOptions.js.map +1 -0
- package/repository/UpsertOptions.d.ts +6 -0
- package/repository/UpsertOptions.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/util/OrmUtils.d.ts +13 -0
- package/util/OrmUtils.js +53 -0
- package/util/OrmUtils.js.map +1 -1
|
@@ -496,25 +496,17 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
496
496
|
* calling this function will override previously set ORDER BY conditions.
|
|
497
497
|
*/
|
|
498
498
|
orderBy(sort, order = "ASC", nulls) {
|
|
499
|
-
if (order !== undefined && order !== "ASC" && order !== "DESC")
|
|
500
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "order" can accept only "ASC" and "DESC" values.`);
|
|
501
|
-
if (nulls !== undefined &&
|
|
502
|
-
nulls !== "NULLS FIRST" &&
|
|
503
|
-
nulls !== "NULLS LAST")
|
|
504
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
505
499
|
if (sort) {
|
|
506
500
|
if (typeof sort === "object") {
|
|
501
|
+
this.validateOrderByCondition(sort);
|
|
507
502
|
this.expressionMap.orderBys = sort;
|
|
508
503
|
}
|
|
509
504
|
else {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
else {
|
|
516
|
-
this.expressionMap.orderBys = { [sort]: order };
|
|
517
|
-
}
|
|
505
|
+
const condition = nulls
|
|
506
|
+
? { [sort]: { order, nulls } }
|
|
507
|
+
: { [sort]: order };
|
|
508
|
+
this.validateOrderByCondition(condition);
|
|
509
|
+
this.expressionMap.orderBys = condition;
|
|
518
510
|
}
|
|
519
511
|
}
|
|
520
512
|
else {
|
|
@@ -526,12 +518,10 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
526
518
|
* Adds ORDER BY condition in the query builder.
|
|
527
519
|
*/
|
|
528
520
|
addOrderBy(sort, order = "ASC", nulls) {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
nulls !== "NULLS LAST")
|
|
534
|
-
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
521
|
+
const condition = nulls
|
|
522
|
+
? { [sort]: { order, nulls } }
|
|
523
|
+
: { [sort]: order };
|
|
524
|
+
this.validateOrderByCondition(condition);
|
|
535
525
|
if (nulls) {
|
|
536
526
|
this.expressionMap.orderBys[sort] = { order, nulls };
|
|
537
527
|
}
|
|
@@ -547,10 +537,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
547
537
|
* then use the take method instead.
|
|
548
538
|
*/
|
|
549
539
|
limit(limit) {
|
|
550
|
-
this.expressionMap.limit = this.
|
|
551
|
-
if (this.expressionMap.limit !== undefined &&
|
|
552
|
-
isNaN(this.expressionMap.limit))
|
|
553
|
-
throw new TypeORMError(`Provided "limit" value is not a number. Please provide a numeric value.`);
|
|
540
|
+
this.expressionMap.limit = this.validateNumericInput("limit", limit);
|
|
554
541
|
return this;
|
|
555
542
|
}
|
|
556
543
|
/**
|
|
@@ -560,30 +547,21 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
560
547
|
* then use the skip method instead.
|
|
561
548
|
*/
|
|
562
549
|
offset(offset) {
|
|
563
|
-
this.expressionMap.offset = this.
|
|
564
|
-
if (this.expressionMap.offset !== undefined &&
|
|
565
|
-
isNaN(this.expressionMap.offset))
|
|
566
|
-
throw new TypeORMError(`Provided "offset" value is not a number. Please provide a numeric value.`);
|
|
550
|
+
this.expressionMap.offset = this.validateNumericInput("offset", offset);
|
|
567
551
|
return this;
|
|
568
552
|
}
|
|
569
553
|
/**
|
|
570
554
|
* Sets maximal number of entities to take.
|
|
571
555
|
*/
|
|
572
556
|
take(take) {
|
|
573
|
-
this.expressionMap.take = this.
|
|
574
|
-
if (this.expressionMap.take !== undefined &&
|
|
575
|
-
isNaN(this.expressionMap.take))
|
|
576
|
-
throw new TypeORMError(`Provided "take" value is not a number. Please provide a numeric value.`);
|
|
557
|
+
this.expressionMap.take = this.validateNumericInput("take", take);
|
|
577
558
|
return this;
|
|
578
559
|
}
|
|
579
560
|
/**
|
|
580
561
|
* Sets number of entities to skip.
|
|
581
562
|
*/
|
|
582
563
|
skip(skip) {
|
|
583
|
-
this.expressionMap.skip = this.
|
|
584
|
-
if (this.expressionMap.skip !== undefined &&
|
|
585
|
-
isNaN(this.expressionMap.skip))
|
|
586
|
-
throw new TypeORMError(`Provided "skip" value is not a number. Please provide a numeric value.`);
|
|
564
|
+
this.expressionMap.skip = this.validateNumericInput("skip", skip);
|
|
587
565
|
return this;
|
|
588
566
|
}
|
|
589
567
|
/**
|
|
@@ -1472,14 +1450,13 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1472
1450
|
return "";
|
|
1473
1451
|
}
|
|
1474
1452
|
/**
|
|
1475
|
-
*
|
|
1453
|
+
* @returns "LOCK" part of SQL query
|
|
1476
1454
|
*/
|
|
1477
1455
|
createLockExpression() {
|
|
1478
1456
|
const driver = this.connection.driver;
|
|
1479
1457
|
let lockTablesClause = "";
|
|
1480
1458
|
if (this.expressionMap.lockTables) {
|
|
1481
|
-
if (!
|
|
1482
|
-
driver.options.type === "cockroachdb")) {
|
|
1459
|
+
if (!DriverUtils.isPostgresFamily(driver)) {
|
|
1483
1460
|
throw new TypeORMError("Lock tables not supported in selected driver");
|
|
1484
1461
|
}
|
|
1485
1462
|
if (this.expressionMap.lockTables.length < 1) {
|
|
@@ -1492,7 +1469,12 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1492
1469
|
onLockExpression = " NOWAIT";
|
|
1493
1470
|
}
|
|
1494
1471
|
else if (this.expressionMap.onLocked === "skip_locked") {
|
|
1495
|
-
|
|
1472
|
+
if (driver.options.type === "sap") {
|
|
1473
|
+
onLockExpression = " IGNORE LOCKED";
|
|
1474
|
+
}
|
|
1475
|
+
else {
|
|
1476
|
+
onLockExpression = " SKIP LOCKED";
|
|
1477
|
+
}
|
|
1496
1478
|
}
|
|
1497
1479
|
switch (this.expressionMap.lockMode) {
|
|
1498
1480
|
case "pessimistic_read":
|
|
@@ -1511,6 +1493,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1511
1493
|
else if (DriverUtils.isPostgresFamily(driver)) {
|
|
1512
1494
|
return " FOR SHARE" + lockTablesClause + onLockExpression;
|
|
1513
1495
|
}
|
|
1496
|
+
else if (driver.options.type === "sap") {
|
|
1497
|
+
return (" FOR SHARE LOCK" + lockTablesClause + onLockExpression);
|
|
1498
|
+
}
|
|
1514
1499
|
else if (driver.options.type === "oracle") {
|
|
1515
1500
|
return " FOR UPDATE";
|
|
1516
1501
|
}
|
|
@@ -1527,7 +1512,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1527
1512
|
return " FOR UPDATE" + onLockExpression;
|
|
1528
1513
|
}
|
|
1529
1514
|
else if (DriverUtils.isPostgresFamily(driver) ||
|
|
1530
|
-
driver.options.type === "
|
|
1515
|
+
driver.options.type === "sap") {
|
|
1531
1516
|
return " FOR UPDATE" + lockTablesClause + onLockExpression;
|
|
1532
1517
|
}
|
|
1533
1518
|
else if (driver.options.type === "mssql") {
|
|
@@ -1536,19 +1521,24 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1536
1521
|
else {
|
|
1537
1522
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1538
1523
|
}
|
|
1524
|
+
// deprecated, use pessimistic_write with onLocked = "skip_locked" instead
|
|
1539
1525
|
case "pessimistic_partial_write":
|
|
1540
1526
|
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1541
1527
|
return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
|
|
1542
1528
|
}
|
|
1529
|
+
else if (driver.options.type === "sap") {
|
|
1530
|
+
return " FOR UPDATE" + lockTablesClause + " IGNORE LOCKED";
|
|
1531
|
+
}
|
|
1543
1532
|
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
1544
1533
|
return " FOR UPDATE SKIP LOCKED";
|
|
1545
1534
|
}
|
|
1546
1535
|
else {
|
|
1547
1536
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1548
1537
|
}
|
|
1538
|
+
// deprecated, use pessimistic_write with onLocked = "nowait" instead
|
|
1549
1539
|
case "pessimistic_write_or_fail":
|
|
1550
1540
|
if (DriverUtils.isPostgresFamily(driver) ||
|
|
1551
|
-
driver.options.type === "
|
|
1541
|
+
driver.options.type === "sap") {
|
|
1552
1542
|
return " FOR UPDATE" + lockTablesClause + " NOWAIT";
|
|
1553
1543
|
}
|
|
1554
1544
|
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
@@ -1558,8 +1548,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
1558
1548
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1559
1549
|
}
|
|
1560
1550
|
case "for_no_key_update":
|
|
1561
|
-
if (DriverUtils.isPostgresFamily(driver)
|
|
1562
|
-
driver.options.type === "cockroachdb") {
|
|
1551
|
+
if (DriverUtils.isPostgresFamily(driver)) {
|
|
1563
1552
|
return (" FOR NO KEY UPDATE" +
|
|
1564
1553
|
lockTablesClause +
|
|
1565
1554
|
onLockExpression);
|
|
@@ -2255,14 +2244,6 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2255
2244
|
ObjectUtils.assign(this.expressionMap, expressionMap);
|
|
2256
2245
|
return this;
|
|
2257
2246
|
}
|
|
2258
|
-
/**
|
|
2259
|
-
* Normalizes a give number - converts to int if possible.
|
|
2260
|
-
*/
|
|
2261
|
-
normalizeNumber(num) {
|
|
2262
|
-
if (typeof num === "number" || num === undefined || num === null)
|
|
2263
|
-
return num;
|
|
2264
|
-
return Number(num);
|
|
2265
|
-
}
|
|
2266
2247
|
/**
|
|
2267
2248
|
* Creates a query builder used to execute sql queries inside this query builder.
|
|
2268
2249
|
*/
|
|
@@ -2583,8 +2564,21 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2583
2564
|
// if all properties of where are undefined we don't need to join anything
|
|
2584
2565
|
// this can happen when user defines map with conditional queries inside
|
|
2585
2566
|
if (typeof where[key] === "object") {
|
|
2586
|
-
const
|
|
2587
|
-
|
|
2567
|
+
const whereKeys = Object.keys(where[key]);
|
|
2568
|
+
// empty object — no predicates to apply, skip the join
|
|
2569
|
+
if (whereKeys.length === 0) {
|
|
2570
|
+
continue;
|
|
2571
|
+
}
|
|
2572
|
+
const allUndefined = whereKeys.every((k) => where[key][k] === undefined);
|
|
2573
|
+
if (allUndefined) {
|
|
2574
|
+
const undefinedBehavior = this.connection.options
|
|
2575
|
+
.invalidWhereValuesBehavior?.undefined ||
|
|
2576
|
+
"ignore";
|
|
2577
|
+
if (undefinedBehavior === "throw") {
|
|
2578
|
+
throw new TypeORMError(`Undefined value encountered in nested relation '${alias}.${key}' of a where condition. ` +
|
|
2579
|
+
`All properties of the nested object are undefined. ` +
|
|
2580
|
+
`Set 'invalidWhereValuesBehavior.undefined' to 'ignore' in connection options to skip properties with undefined values.`);
|
|
2581
|
+
}
|
|
2588
2582
|
continue;
|
|
2589
2583
|
}
|
|
2590
2584
|
}
|