cascade对多对一级联返回的空值未正确处理
This commit is contained in:
parent
b9a764cad3
commit
ca1fe55c3b
|
|
@ -128,7 +128,7 @@ var CascadeStore = /** @class */ (function (_super) {
|
|||
subCascadeSelectionFns.forEach(function (ele) { return cascadeSelectionFns.push(function (result) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
||||
return tslib_1.__generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }))];
|
||||
case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }).filter(function (ele2) { return !!ele2; }))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/];
|
||||
|
|
@ -222,7 +222,7 @@ var CascadeStore = /** @class */ (function (_super) {
|
|||
subCascadeSelectionFns.forEach(function (ele) { return cascadeSelectionFns.push(function (result) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
||||
return tslib_1.__generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }))];
|
||||
case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }).filter(function (ele2) { return !!ele2; }))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/];
|
||||
|
|
|
|||
|
|
@ -21,48 +21,19 @@ function createOperationsFromModies(modies) {
|
|||
exports.createOperationsFromModies = createOperationsFromModies;
|
||||
function applyModis(filter, context, option) {
|
||||
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
||||
var modis, _a, _b, _c;
|
||||
var _a, _b, _c;
|
||||
var _d;
|
||||
return tslib_1.__generator(this, function (_e) {
|
||||
switch (_e.label) {
|
||||
case 0: return [4 /*yield*/, context.rowStore.select('modi', {
|
||||
data: {
|
||||
id: 1,
|
||||
},
|
||||
filter: filter,
|
||||
sorter: [
|
||||
{
|
||||
$attr: {
|
||||
$$createAt$$: 1,
|
||||
},
|
||||
$direction: 'asc',
|
||||
}
|
||||
]
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: false,
|
||||
}))];
|
||||
case 1:
|
||||
modis = (_e.sent()).result;
|
||||
case 0:
|
||||
_b = (_a = context.rowStore).operate;
|
||||
_c = ['modi'];
|
||||
_d = {};
|
||||
return [4 /*yield*/, generateNewId()];
|
||||
case 2: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
|
||||
case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
|
||||
_d.action = 'apply',
|
||||
_d.data = {},
|
||||
_d.filter = {
|
||||
id: {
|
||||
$in: modis.map(function (ele) { return ele.id; }),
|
||||
}
|
||||
},
|
||||
_d.sorter = [
|
||||
{
|
||||
$attr: {
|
||||
$$createAt$$: 1,
|
||||
},
|
||||
$direction: 'asc',
|
||||
}
|
||||
],
|
||||
_d.filter = filter,
|
||||
_d), context, Object.assign({}, option, {
|
||||
blockTrigger: false,
|
||||
})]))];
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ var triggers = [
|
|||
fn: function (_a, context, option) {
|
||||
var operation = _a.operation;
|
||||
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
||||
var filter, modies, modies_1, modies_1_1, modi, targetEntity, id, action, data, filter_1, targets, e_1_1;
|
||||
var filter, modies, modies_1, modies_1_1, modi, targetEntity, id, action, data, filter_1, e_1_1;
|
||||
var e_1, _b;
|
||||
return tslib_1.__generator(this, function (_c) {
|
||||
switch (_c.label) {
|
||||
|
|
@ -30,49 +30,39 @@ var triggers = [
|
|||
modies = (_c.sent()).result;
|
||||
_c.label = 2;
|
||||
case 2:
|
||||
_c.trys.push([2, 8, 9, 10]);
|
||||
_c.trys.push([2, 7, 8, 9]);
|
||||
modies_1 = tslib_1.__values(modies), modies_1_1 = modies_1.next();
|
||||
_c.label = 3;
|
||||
case 3:
|
||||
if (!!modies_1_1.done) return [3 /*break*/, 7];
|
||||
if (!!modies_1_1.done) return [3 /*break*/, 6];
|
||||
modi = modies_1_1.value;
|
||||
targetEntity = modi.targetEntity, id = modi.id, action = modi.action, data = modi.data, filter_1 = modi.filter;
|
||||
return [4 /*yield*/, context.rowStore.select(targetEntity, {
|
||||
data: {
|
||||
id: 1,
|
||||
},
|
||||
return [4 /*yield*/, context.rowStore.operate(targetEntity, {
|
||||
id: id,
|
||||
action: action,
|
||||
data: data,
|
||||
filter: filter_1,
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: true,
|
||||
}))];
|
||||
case 4:
|
||||
targets = _c.sent();
|
||||
return [4 /*yield*/, context.rowStore.operate(targetEntity, {
|
||||
id: id,
|
||||
action: action,
|
||||
data: data,
|
||||
filter: targets.result.map(function (ele) { return ele.id; }),
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: true,
|
||||
}))];
|
||||
case 5:
|
||||
_c.sent();
|
||||
_c.label = 6;
|
||||
case 6:
|
||||
_c.label = 5;
|
||||
case 5:
|
||||
modies_1_1 = modies_1.next();
|
||||
return [3 /*break*/, 3];
|
||||
case 7: return [3 /*break*/, 10];
|
||||
case 8:
|
||||
case 6: return [3 /*break*/, 9];
|
||||
case 7:
|
||||
e_1_1 = _c.sent();
|
||||
e_1 = { error: e_1_1 };
|
||||
return [3 /*break*/, 10];
|
||||
case 9:
|
||||
return [3 /*break*/, 9];
|
||||
case 8:
|
||||
try {
|
||||
if (modies_1_1 && !modies_1_1.done && (_b = modies_1.return)) _b.call(modies_1);
|
||||
}
|
||||
finally { if (e_1) throw e_1.error; }
|
||||
return [7 /*endfinally*/];
|
||||
case 10: return [2 /*return*/, modies.length];
|
||||
case 9: return [2 /*return*/, modies.length];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,19 +2,4 @@
|
|||
* 避免lodash打包体积过大
|
||||
* 像assign, keys尽量使用Object的函数
|
||||
*/
|
||||
import unset from 'lodash/unset';
|
||||
import uniqBy from 'lodash/uniqBy';
|
||||
import pull from 'lodash/pull';
|
||||
import uniq from 'lodash/uniq';
|
||||
import get from 'lodash/get';
|
||||
import set from 'lodash/set';
|
||||
import intersection from 'lodash/intersection';
|
||||
import omit from 'lodash/omit';
|
||||
import merge from 'lodash/merge';
|
||||
import cloneDeep from 'lodash/cloneDeep';
|
||||
import pick from 'lodash/pick';
|
||||
import isEqual from 'lodash/isEqual';
|
||||
import union from 'lodash/union';
|
||||
import difference from 'lodash/difference';
|
||||
import groupBy from 'lodash/groupBy';
|
||||
export { unset, pull, uniq, uniqBy, get, set, intersection, omit, merge, cloneDeep, pick, isEqual, union, difference, groupBy, };
|
||||
export { unset, pull, uniq, uniqBy, get, set, intersection, omit, merge, cloneDeep, pick, isEqual, union, difference, groupBy, } from 'lodash';
|
||||
|
|
|
|||
|
|
@ -1,38 +1,38 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.groupBy = exports.difference = exports.union = exports.isEqual = exports.pick = exports.cloneDeep = exports.merge = exports.omit = exports.intersection = exports.set = exports.get = exports.uniqBy = exports.uniq = exports.pull = exports.unset = void 0;
|
||||
var tslib_1 = require("tslib");
|
||||
/**
|
||||
* 避免lodash打包体积过大
|
||||
* 像assign, keys尽量使用Object的函数
|
||||
*/
|
||||
var unset_1 = tslib_1.__importDefault(require("lodash/unset"));
|
||||
exports.unset = unset_1.default;
|
||||
var uniqBy_1 = tslib_1.__importDefault(require("lodash/uniqBy"));
|
||||
exports.uniqBy = uniqBy_1.default;
|
||||
var pull_1 = tslib_1.__importDefault(require("lodash/pull"));
|
||||
exports.pull = pull_1.default;
|
||||
var uniq_1 = tslib_1.__importDefault(require("lodash/uniq"));
|
||||
exports.uniq = uniq_1.default;
|
||||
var get_1 = tslib_1.__importDefault(require("lodash/get"));
|
||||
exports.get = get_1.default;
|
||||
var set_1 = tslib_1.__importDefault(require("lodash/set"));
|
||||
exports.set = set_1.default;
|
||||
var intersection_1 = tslib_1.__importDefault(require("lodash/intersection"));
|
||||
exports.intersection = intersection_1.default;
|
||||
var omit_1 = tslib_1.__importDefault(require("lodash/omit"));
|
||||
exports.omit = omit_1.default;
|
||||
var merge_1 = tslib_1.__importDefault(require("lodash/merge"));
|
||||
exports.merge = merge_1.default;
|
||||
var cloneDeep_1 = tslib_1.__importDefault(require("lodash/cloneDeep"));
|
||||
exports.cloneDeep = cloneDeep_1.default;
|
||||
var pick_1 = tslib_1.__importDefault(require("lodash/pick"));
|
||||
exports.pick = pick_1.default;
|
||||
var isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual"));
|
||||
exports.isEqual = isEqual_1.default;
|
||||
var union_1 = tslib_1.__importDefault(require("lodash/union"));
|
||||
exports.union = union_1.default;
|
||||
var difference_1 = tslib_1.__importDefault(require("lodash/difference"));
|
||||
exports.difference = difference_1.default;
|
||||
var groupBy_1 = tslib_1.__importDefault(require("lodash/groupBy"));
|
||||
exports.groupBy = groupBy_1.default;
|
||||
/* import unset from 'lodash/unset';
|
||||
import uniqBy from 'lodash/uniqBy';
|
||||
import pull from 'lodash/pull';
|
||||
import uniq from 'lodash/uniq';
|
||||
import get from 'lodash/get';
|
||||
import set from 'lodash/set';
|
||||
import intersection from 'lodash/intersection';
|
||||
import omit from 'lodash/omit';
|
||||
import merge from 'lodash/merge';
|
||||
import cloneDeep from 'lodash/cloneDeep';
|
||||
import pick from 'lodash/pick';
|
||||
import isEqual from 'lodash/isEqual';
|
||||
import union from 'lodash/union';
|
||||
import difference from 'lodash/difference';
|
||||
import groupBy from 'lodash/groupBy'; */
|
||||
var lodash_1 = require("lodash");
|
||||
Object.defineProperty(exports, "unset", { enumerable: true, get: function () { return lodash_1.unset; } });
|
||||
Object.defineProperty(exports, "pull", { enumerable: true, get: function () { return lodash_1.pull; } });
|
||||
Object.defineProperty(exports, "uniq", { enumerable: true, get: function () { return lodash_1.uniq; } });
|
||||
Object.defineProperty(exports, "uniqBy", { enumerable: true, get: function () { return lodash_1.uniqBy; } });
|
||||
Object.defineProperty(exports, "get", { enumerable: true, get: function () { return lodash_1.get; } });
|
||||
Object.defineProperty(exports, "set", { enumerable: true, get: function () { return lodash_1.set; } });
|
||||
Object.defineProperty(exports, "intersection", { enumerable: true, get: function () { return lodash_1.intersection; } });
|
||||
Object.defineProperty(exports, "omit", { enumerable: true, get: function () { return lodash_1.omit; } });
|
||||
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return lodash_1.merge; } });
|
||||
Object.defineProperty(exports, "cloneDeep", { enumerable: true, get: function () { return lodash_1.cloneDeep; } });
|
||||
Object.defineProperty(exports, "pick", { enumerable: true, get: function () { return lodash_1.pick; } });
|
||||
Object.defineProperty(exports, "isEqual", { enumerable: true, get: function () { return lodash_1.isEqual; } });
|
||||
Object.defineProperty(exports, "union", { enumerable: true, get: function () { return lodash_1.union; } });
|
||||
Object.defineProperty(exports, "difference", { enumerable: true, get: function () { return lodash_1.difference; } });
|
||||
Object.defineProperty(exports, "groupBy", { enumerable: true, get: function () { return lodash_1.groupBy; } });
|
||||
|
|
|
|||
|
|
@ -158,8 +158,8 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict, Cxt e
|
|||
});
|
||||
subCascadeSelectionFns.forEach(
|
||||
ele => cascadeSelectionFns.push(
|
||||
async (result) => {
|
||||
await ele(result.map(ele2 => ele2[attr] as any));
|
||||
async (result) => {
|
||||
await ele(result.map(ele2 => ele2[attr] as any).filter(ele2 => !!ele2));
|
||||
}
|
||||
)
|
||||
);
|
||||
|
|
@ -256,7 +256,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict, Cxt e
|
|||
subCascadeSelectionFns.forEach(
|
||||
ele => cascadeSelectionFns.push(
|
||||
async (result) => {
|
||||
await ele(result.map(ele2 => ele2[attr] as any));
|
||||
await ele(result.map(ele2 => ele2[attr] as any).filter(ele2 => !!ele2));
|
||||
}
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -25,40 +25,19 @@ export function createOperationsFromModies(modies: Modi[]): Array<{
|
|||
}
|
||||
|
||||
export async function applyModis<ED extends EntityDict & BaseEntityDict, Cxt extends UniversalContext<ED>, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op) {
|
||||
const { result: modis } = await context.rowStore.select('modi', {
|
||||
data: {
|
||||
id: 1,
|
||||
},
|
||||
filter,
|
||||
sorter: [
|
||||
{
|
||||
$attr: {
|
||||
$$createAt$$: 1,
|
||||
},
|
||||
$direction: 'asc',
|
||||
}
|
||||
]
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: false,
|
||||
}));
|
||||
|
||||
return context.rowStore.operate('modi', {
|
||||
id: await generateNewId(),
|
||||
action: 'apply',
|
||||
data: {},
|
||||
filter: {
|
||||
id: {
|
||||
$in: modis.map(ele => ele.id),
|
||||
}
|
||||
},
|
||||
sorter: [
|
||||
filter,
|
||||
/* sorter: [
|
||||
{
|
||||
$attr: {
|
||||
$$createAt$$: 1,
|
||||
},
|
||||
$direction: 'asc',
|
||||
}
|
||||
]
|
||||
] */
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: false,
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -23,19 +23,11 @@ const triggers: Trigger<EntityDict, 'modi', UniversalContext<EntityDict>>[] = [
|
|||
|
||||
for (const modi of modies) {
|
||||
const { targetEntity, id, action, data, filter} = modi;
|
||||
const targets = await context.rowStore.select(targetEntity as keyof EntityDict, {
|
||||
data: {
|
||||
id: 1,
|
||||
},
|
||||
filter: filter as any,
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: true,
|
||||
}));
|
||||
await context.rowStore.operate(targetEntity as keyof EntityDict, {
|
||||
id,
|
||||
action,
|
||||
data,
|
||||
filter: targets.result.map(ele => ele.id),
|
||||
filter: filter as any,
|
||||
}, context, Object.assign({}, option, {
|
||||
blockTrigger: true,
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* 避免lodash打包体积过大
|
||||
* 像assign, keys尽量使用Object的函数
|
||||
*/
|
||||
import unset from 'lodash/unset';
|
||||
/* import unset from 'lodash/unset';
|
||||
import uniqBy from 'lodash/uniqBy';
|
||||
import pull from 'lodash/pull';
|
||||
import uniq from 'lodash/uniq';
|
||||
|
|
@ -16,8 +16,7 @@ import pick from 'lodash/pick';
|
|||
import isEqual from 'lodash/isEqual';
|
||||
import union from 'lodash/union';
|
||||
import difference from 'lodash/difference';
|
||||
import groupBy from 'lodash/groupBy';
|
||||
|
||||
import groupBy from 'lodash/groupBy'; */
|
||||
export {
|
||||
unset,
|
||||
pull,
|
||||
|
|
@ -34,4 +33,4 @@ export {
|
|||
union,
|
||||
difference,
|
||||
groupBy,
|
||||
};
|
||||
} from 'lodash';
|
||||
|
|
|
|||
Loading…
Reference in New Issue