临时改了下一对多的join连接,使filter被修改后在某些情况下也能正确相连
This commit is contained in:
parent
196cbed470
commit
73beea2b3f
|
|
@ -307,6 +307,10 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cascadeSelectionFns.push(function (result) {
|
cascadeSelectionFns.push(function (result) {
|
||||||
|
var entityIds = (0, lodash_1.uniq)(result.filter(function (ele) { return ele.entity === attr; }).map(function (ele) {
|
||||||
|
(0, assert_1.default)(ele.entityId !== null);
|
||||||
|
return ele.entityId;
|
||||||
|
}));
|
||||||
var dealWithSubRows = function (subRows) {
|
var dealWithSubRows = function (subRows) {
|
||||||
(0, assert_1.default)(subRows.length <= entityIds.length);
|
(0, assert_1.default)(subRows.length <= entityIds.length);
|
||||||
if (subRows.length < entityIds.length && !toModi) {
|
if (subRows.length < entityIds.length && !toModi) {
|
||||||
|
|
@ -339,10 +343,6 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
var entityIds = (0, lodash_1.uniq)(result.filter(function (ele) { return ele.entity === attr; }).map(function (ele) {
|
|
||||||
(0, assert_1.default)(ele.entityId !== null);
|
|
||||||
return ele.entityId;
|
|
||||||
}));
|
|
||||||
if (entityIds.length > 0) {
|
if (entityIds.length > 0) {
|
||||||
var subRows = cascadeSelectFn.call(_this, attr, {
|
var subRows = cascadeSelectFn.call(_this, attr, {
|
||||||
data: projection2[attr],
|
data: projection2[attr],
|
||||||
|
|
@ -359,8 +359,6 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
dealWithSubRows(subRows);
|
dealWithSubRows(subRows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -399,6 +397,7 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cascadeSelectionFns.push(function (result) {
|
cascadeSelectionFns.push(function (result) {
|
||||||
|
var ids = (0, lodash_1.uniq)(result.filter(function (ele) { return !!(ele["".concat(attr, "Id")]); }).map(function (ele) { return ele["".concat(attr, "Id")]; }));
|
||||||
var dealWithSubRows = function (subRows) {
|
var dealWithSubRows = function (subRows) {
|
||||||
(0, assert_1.default)(subRows.length <= ids.length);
|
(0, assert_1.default)(subRows.length <= ids.length);
|
||||||
if (subRows.length < ids.length && !toModi) {
|
if (subRows.length < ids.length && !toModi) {
|
||||||
|
|
@ -436,7 +435,6 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
var ids = (0, lodash_1.uniq)(result.filter(function (ele) { return !!(ele["".concat(attr, "Id")]); }).map(function (ele) { return ele["".concat(attr, "Id")]; }));
|
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
var subRows = cascadeSelectFn.call(_this, relation, {
|
var subRows = cascadeSelectFn.call(_this, relation, {
|
||||||
data: projection2[attr],
|
data: projection2[attr],
|
||||||
|
|
@ -500,6 +498,15 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
var _a;
|
var _a;
|
||||||
var ids = result.map(function (ele) { return ele.id; });
|
var ids = result.map(function (ele) { return ele.id; });
|
||||||
var dealWithSubRows = function (subRows) {
|
var dealWithSubRows = function (subRows) {
|
||||||
|
var _a;
|
||||||
|
// 这里如果result只有一行,则把返回结果直接置上,不对比外键值
|
||||||
|
// 这样做的原因是有的对象的filter会被改写掉(userId),只能临时这样处理
|
||||||
|
if (result.length == 1) {
|
||||||
|
Object.assign(result[0], (_a = {},
|
||||||
|
_a[attr] = subRows,
|
||||||
|
_a));
|
||||||
|
}
|
||||||
|
else {
|
||||||
result.forEach(function (ele) {
|
result.forEach(function (ele) {
|
||||||
var _a;
|
var _a;
|
||||||
var subRowss = subRows.filter(function (ele2) { return ele2[foreignKey_1] === ele.id; });
|
var subRowss = subRows.filter(function (ele2) { return ele2[foreignKey_1] === ele.id; });
|
||||||
|
|
@ -508,6 +515,7 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
_a[attr] = subRowss,
|
_a[attr] = subRowss,
|
||||||
_a));
|
_a));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
var subRows = cascadeSelectFn.call(_this, entity2_1, {
|
var subRows = cascadeSelectFn.call(_this, entity2_1, {
|
||||||
|
|
@ -570,6 +578,15 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
cascadeSelectionFns.push(function (result) {
|
cascadeSelectionFns.push(function (result) {
|
||||||
var ids = result.map(function (ele) { return ele.id; });
|
var ids = result.map(function (ele) { return ele.id; });
|
||||||
var dealWithSubRows = function (subRows) {
|
var dealWithSubRows = function (subRows) {
|
||||||
|
var _a;
|
||||||
|
// 这里如果result只有一行,则把返回结果直接置上,不对比外键值
|
||||||
|
// 这样做的原因是有的对象的filter会被改写掉(userId),只能临时这样处理
|
||||||
|
if (result.length === 1) {
|
||||||
|
Object.assign(result[0], (_a = {},
|
||||||
|
_a[attr] = subRows,
|
||||||
|
_a));
|
||||||
|
}
|
||||||
|
else {
|
||||||
result.forEach(function (ele) {
|
result.forEach(function (ele) {
|
||||||
var _a;
|
var _a;
|
||||||
var subRowss = subRows.filter(function (ele2) { return ele2.entityId === ele.id; });
|
var subRowss = subRows.filter(function (ele2) { return ele2.entityId === ele.id; });
|
||||||
|
|
@ -578,6 +595,7 @@ var CascadeStore = /** @class */ (function (_super) {
|
||||||
_a[attr] = subRowss,
|
_a[attr] = subRowss,
|
||||||
_a));
|
_a));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
var subRows = cascadeSelectFn.call(_this, entity2_1, {
|
var subRows = cascadeSelectFn.call(_this, entity2_1, {
|
||||||
|
|
|
||||||
|
|
@ -376,6 +376,15 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
else {
|
else {
|
||||||
cascadeSelectionFns.push(
|
cascadeSelectionFns.push(
|
||||||
(result) => {
|
(result) => {
|
||||||
|
const entityIds = uniq(result.filter(
|
||||||
|
ele => ele.entity === attr
|
||||||
|
).map(
|
||||||
|
ele => {
|
||||||
|
assert(ele.entityId !== null);
|
||||||
|
return ele.entityId;
|
||||||
|
}
|
||||||
|
) as string[]);
|
||||||
|
|
||||||
const dealWithSubRows = (subRows: Partial<ED[T]['Schema']>[]) => {
|
const dealWithSubRows = (subRows: Partial<ED[T]['Schema']>[]) => {
|
||||||
assert(subRows.length <= entityIds.length);
|
assert(subRows.length <= entityIds.length);
|
||||||
if (subRows.length < entityIds.length && !toModi) {
|
if (subRows.length < entityIds.length && !toModi) {
|
||||||
|
|
@ -412,14 +421,6 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
const entityIds = uniq(result.filter(
|
|
||||||
ele => ele.entity === attr
|
|
||||||
).map(
|
|
||||||
ele => {
|
|
||||||
assert(ele.entityId !== null);
|
|
||||||
return ele.entityId;
|
|
||||||
}
|
|
||||||
) as string[]);
|
|
||||||
|
|
||||||
if (entityIds.length > 0) {
|
if (entityIds.length > 0) {
|
||||||
const subRows = cascadeSelectFn.call(this, attr as any, {
|
const subRows = cascadeSelectFn.call(this, attr as any, {
|
||||||
|
|
@ -439,9 +440,6 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
dealWithSubRows(subRows as any);
|
dealWithSubRows(subRows as any);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -493,6 +491,12 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
else {
|
else {
|
||||||
cascadeSelectionFns.push(
|
cascadeSelectionFns.push(
|
||||||
(result) => {
|
(result) => {
|
||||||
|
const ids = uniq(result.filter(
|
||||||
|
ele => !!(ele[`${attr}Id`])
|
||||||
|
).map(
|
||||||
|
ele => ele[`${attr}Id`]
|
||||||
|
) as string[]);
|
||||||
|
|
||||||
const dealWithSubRows = (subRows: Partial<ED[keyof ED]['Schema']>[]) => {
|
const dealWithSubRows = (subRows: Partial<ED[keyof ED]['Schema']>[]) => {
|
||||||
assert(subRows.length <= ids.length);
|
assert(subRows.length <= ids.length);
|
||||||
if (subRows.length < ids.length && !toModi) {
|
if (subRows.length < ids.length && !toModi) {
|
||||||
|
|
@ -534,11 +538,6 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
const ids = uniq(result.filter(
|
|
||||||
ele => !!(ele[`${attr}Id`])
|
|
||||||
).map(
|
|
||||||
ele => ele[`${attr}Id`]
|
|
||||||
) as string[]);
|
|
||||||
|
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
const subRows = cascadeSelectFn.call(this, relation, {
|
const subRows = cascadeSelectFn.call(this, relation, {
|
||||||
|
|
@ -613,6 +612,14 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
) as string[];
|
) as string[];
|
||||||
|
|
||||||
const dealWithSubRows = (subRows: Partial<ED[keyof ED]['Schema']>[]) => {
|
const dealWithSubRows = (subRows: Partial<ED[keyof ED]['Schema']>[]) => {
|
||||||
|
// 这里如果result只有一行,则把返回结果直接置上,不对比外键值
|
||||||
|
// 这样做的原因是有的对象的filter会被改写掉(userId),只能临时这样处理
|
||||||
|
if (result.length == 1) {
|
||||||
|
Object.assign(result[0], {
|
||||||
|
[attr]: subRows,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
result.forEach(
|
result.forEach(
|
||||||
(ele) => {
|
(ele) => {
|
||||||
const subRowss = subRows.filter(
|
const subRowss = subRows.filter(
|
||||||
|
|
@ -624,6 +631,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
|
|
@ -697,6 +705,14 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
ele => ele.id
|
ele => ele.id
|
||||||
) as string[];
|
) as string[];
|
||||||
const dealWithSubRows = (subRows: Partial<ED[T]['Schema']>[]) => {
|
const dealWithSubRows = (subRows: Partial<ED[T]['Schema']>[]) => {
|
||||||
|
// 这里如果result只有一行,则把返回结果直接置上,不对比外键值
|
||||||
|
// 这样做的原因是有的对象的filter会被改写掉(userId),只能临时这样处理
|
||||||
|
if (result.length === 1) {
|
||||||
|
Object.assign(result[0], {
|
||||||
|
[attr]: subRows,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
result.forEach(
|
result.forEach(
|
||||||
(ele) => {
|
(ele) => {
|
||||||
const subRowss = subRows.filter(
|
const subRowss = subRows.filter(
|
||||||
|
|
@ -708,6 +724,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue