Browse Source

fix: handle wrong nested relation param values

re #856

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/863/head
Pranav C 3 years ago
parent
commit
bd1816a34c
  1. 16
      packages/nocodb/src/lib/dataMapper/lib/sql/BaseModelSql.ts

16
packages/nocodb/src/lib/dataMapper/lib/sql/BaseModelSql.ts

@ -1266,7 +1266,10 @@ class BaseModelSql extends BaseModel {
); );
let { fields } = restArgs; let { fields } = restArgs;
const { cn } = this.hasManyRelations.find(({ tn }) => tn === child) || {}; const { cn } = this.hasManyRelations.find(({ tn }) => tn === child) || {};
const _cn = this.dbModels[child].columnToAlias?.[cn]; if (!this.dbModels[child]) {
return;
}
const _cn = this.dbModels[child]?.columnToAlias?.[cn];
if (fields !== '*' && fields.split(',').indexOf(cn) === -1) { if (fields !== '*' && fields.split(',').indexOf(cn) === -1) {
fields += ',' + cn; fields += ',' + cn;
@ -1345,6 +1348,10 @@ class BaseModelSql extends BaseModel {
fields += ',' + cn; fields += ',' + cn;
} }
if (!this.dbModels[child]) {
return;
}
const childs = await this._run( const childs = await this._run(
driver.union( driver.union(
parentIds.map(id => { parentIds.map(id => {
@ -1498,7 +1505,11 @@ class BaseModelSql extends BaseModel {
fields += ',' + this.pks[0].cn; fields += ',' + this.pks[0].cn;
} }
if (parents)
for (const parent of parents.split(',')) { for (const parent of parents.split(',')) {
if (!parent) {
continue;
}
const { cn } = const { cn } =
this.belongsToRelations.find(({ rtn }) => rtn === parent) || {}; this.belongsToRelations.find(({ rtn }) => rtn === parent) || {};
if (fields !== '*' && fields.split(',').indexOf(cn) === -1) { if (fields !== '*' && fields.split(',').indexOf(cn) === -1) {
@ -1525,6 +1536,7 @@ class BaseModelSql extends BaseModel {
); );
} }
if (parents)
await Promise.all( await Promise.all(
parents.split(',').map((parent, index): any => { parents.split(',').map((parent, index): any => {
if (!parent) { if (!parent) {
@ -1945,6 +1957,8 @@ class BaseModelSql extends BaseModel {
fields += ',' + rcn; fields += ',' + rcn;
} }
if (!this.dbModels[parent]) return;
const parents = await this._run( const parents = await this._run(
driver(this.dbModels[parent].tnPath) driver(this.dbModels[parent].tnPath)
// .select(...fields.split(',') // .select(...fields.split(',')

Loading…
Cancel
Save