Browse Source

Merge pull request #6090 from nocodb/refactor/dataloader-error

Avoid dataloader error and throw proper error and update scripts in package.json
pull/6092/head
mertmit 1 year ago committed by GitHub
parent
commit
0132c23630
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      packages/nocodb/package.json
  2. 107
      packages/nocodb/src/db/BaseModelSqlv2.ts

8
packages/nocodb/package.json

@ -17,14 +17,12 @@
}, },
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"scripts": { "scripts": {
"build": "nest build", "build": "npm run docker:build",
"build:obfuscate": "EE=true webpack --config webpack.config.js", "build:obfuscate": "EE=true webpack --config webpack.config.js",
"obfuscate:build:publish": "npm run build:obfuscate && npm publish .", "obfuscate:build:publish": "npm run build:obfuscate && npm publish .",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start", "start": "npm run watch:run",
"start:dev": "nest start --watch", "start:prod": "node docker/main",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest", "test": "jest",
"test:watch": "jest --watch", "test:watch": "jest --watch",

107
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -1390,30 +1390,25 @@ class BaseModelSqlv2 {
if (colOptions?.type === 'hm') { if (colOptions?.type === 'hm') {
const listLoader = new DataLoader(async (ids: string[]) => { const listLoader = new DataLoader(async (ids: string[]) => {
try { if (ids.length > 1) {
if (ids.length > 1) { const data = await this.multipleHmList(
const data = await this.multipleHmList( {
colId: column.id,
ids,
},
(listLoader as any).args,
);
return ids.map((id: string) => (data[id] ? data[id] : []));
} else {
return [
await this.hmList(
{ {
colId: column.id, colId: column.id,
ids, id: ids[0],
}, },
(listLoader as any).args, (listLoader as any).args,
); ),
return ids.map((id: string) => (data[id] ? data[id] : [])); ];
} else {
return [
await this.hmList(
{
colId: column.id,
id: ids[0],
},
(listLoader as any).args,
),
];
}
} catch (e) {
console.log(e);
return [];
} }
}); });
const self: BaseModelSqlv2 = this; const self: BaseModelSqlv2 = this;
@ -1434,31 +1429,26 @@ class BaseModelSqlv2 {
// }); // });
} else if (colOptions.type === 'mm') { } else if (colOptions.type === 'mm') {
const listLoader = new DataLoader(async (ids: string[]) => { const listLoader = new DataLoader(async (ids: string[]) => {
try { if (ids?.length > 1) {
if (ids?.length > 1) { const data = await this.multipleMmList(
const data = await this.multipleMmList( {
parentIds: ids,
colId: column.id,
},
(listLoader as any).args,
);
return data;
} else {
return [
await this.mmList(
{ {
parentIds: ids, parentId: ids[0],
colId: column.id, colId: column.id,
}, },
(listLoader as any).args, (listLoader as any).args,
); ),
];
return data;
} else {
return [
await this.mmList(
{
parentId: ids[0],
colId: column.id,
},
(listLoader as any).args,
),
];
}
} catch (e) {
console.log(e);
return [];
} }
}); });
@ -1481,26 +1471,21 @@ class BaseModelSqlv2 {
colId: colOptions.fk_child_column_id, colId: colOptions.fk_child_column_id,
}); });
const readLoader = new DataLoader(async (ids: string[]) => { const readLoader = new DataLoader(async (ids: string[]) => {
try { const data = await (
const data = await ( await Model.getBaseModelSQL({
await Model.getBaseModelSQL({ id: pCol.fk_model_id,
id: pCol.fk_model_id, dbDriver: this.dbDriver,
dbDriver: this.dbDriver, })
}) ).list(
).list( {
{ // limit: ids.length,
// limit: ids.length, where: `(${pCol.column_name},in,${ids.join(',')})`,
where: `(${pCol.column_name},in,${ids.join(',')})`, fieldsSet: (readLoader as any).args?.fieldsSet,
fieldsSet: (readLoader as any).args?.fieldsSet, },
}, true,
true, );
); const gs = groupBy(data, pCol.title);
const gs = groupBy(data, pCol.title); return ids.map(async (id: string) => gs?.[id]?.[0]);
return ids.map(async (id: string) => gs?.[id]?.[0]);
} catch (e) {
console.log(e);
return [];
}
}); });
// defining HasMany count method within GQL Type class // defining HasMany count method within GQL Type class

Loading…
Cancel
Save