mirror of
https://github.com/nocodb/nocodb.git
synced 2026-04-25 08:15:56 +00:00
fix: nocoExecute - lookup related fix
This commit is contained in:
@@ -552,9 +552,9 @@ export class DatasService {
|
|||||||
|
|
||||||
const { ast, dependencyFields } = await getAst(context, {
|
const { ast, dependencyFields } = await getAst(context, {
|
||||||
model,
|
model,
|
||||||
query,
|
query: { ...query },
|
||||||
view,
|
view,
|
||||||
includeRowColorColumns: query.include_row_color === 'true',
|
includeRowColorColumns: query?.include_row_color === 'true',
|
||||||
});
|
});
|
||||||
|
|
||||||
const listArgs: any = { ...dependencyFields };
|
const listArgs: any = { ...dependencyFields };
|
||||||
|
|||||||
@@ -35,15 +35,15 @@ const nocoExecute = async (
|
|||||||
): Promise<any> => {
|
): Promise<any> => {
|
||||||
// Handle array of resolvers by executing nocoExecute on each sequentially
|
// Handle array of resolvers by executing nocoExecute on each sequentially
|
||||||
if (Array.isArray(resolverObj)) {
|
if (Array.isArray(resolverObj)) {
|
||||||
const results = [];
|
const res = [];
|
||||||
for (let i = 0; i < resolverObj.length; i++) {
|
for (let i = 0; i < resolverObj.length; i++) {
|
||||||
const resolver = resolverObj[i];
|
const resolver = resolverObj[i];
|
||||||
dataTree[i] = dataTree[i] || {};
|
dataTree[i] = dataTree[i] || {};
|
||||||
results.push(
|
res.push(
|
||||||
await nocoExecuteSingle(requestObj, resolver, dataTree[i], rootArgs),
|
await nocoExecuteSingle(requestObj, resolver, dataTree[i], rootArgs),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return results;
|
return res;
|
||||||
} else {
|
} else {
|
||||||
return nocoExecuteSingle(requestObj, resolverObj, dataTree, rootArgs);
|
return nocoExecuteSingle(requestObj, resolverObj, dataTree, rootArgs);
|
||||||
}
|
}
|
||||||
@@ -106,11 +106,11 @@ const nocoExecuteSingle = async (
|
|||||||
: Promise.resolve(dataTreeObj[path[0]]));
|
: Promise.resolve(dataTreeObj[path[0]]));
|
||||||
|
|
||||||
if (Array.isArray(res1)) {
|
if (Array.isArray(res1)) {
|
||||||
const results = [];
|
const res = [];
|
||||||
for (const r of res1) {
|
for (let i = 0; i < res1.length; i++) {
|
||||||
results.push(await extractNested(path.slice(1), r, {}, args));
|
res.push(await extractNested(path.slice(1), res1[i], {}, args));
|
||||||
}
|
}
|
||||||
return results;
|
return res;
|
||||||
} else {
|
} else {
|
||||||
return res1 !== null && res1 !== undefined
|
return res1 !== null && res1 !== undefined
|
||||||
? await extractNested(path.slice(1), res1, {}, args)
|
? await extractNested(path.slice(1), res1, {}, args)
|
||||||
@@ -151,7 +151,7 @@ const nocoExecuteSingle = async (
|
|||||||
res[key] = (async () => {
|
res[key] = (async () => {
|
||||||
const res1 = await extractNested(
|
const res1 = await extractNested(
|
||||||
resolverObj?.__proto__?.__columnAliases?.[key]?.path,
|
resolverObj?.__proto__?.__columnAliases?.[key]?.path,
|
||||||
dataTree,
|
{},
|
||||||
resolverObj,
|
resolverObj,
|
||||||
args?.nested?.[key],
|
args?.nested?.[key],
|
||||||
);
|
);
|
||||||
@@ -179,23 +179,26 @@ const nocoExecuteSingle = async (
|
|||||||
if (Array.isArray(res1)) {
|
if (Array.isArray(res1)) {
|
||||||
// Handle arrays of results by executing nocoExecute on each element sequentially
|
// Handle arrays of results by executing nocoExecute on each element sequentially
|
||||||
dataTree[key] = dataTree[key] || [];
|
dataTree[key] = dataTree[key] || [];
|
||||||
|
res[key] = [];
|
||||||
for (let i = 0; i < res1.length; i++) {
|
for (let i = 0; i < res1.length; i++) {
|
||||||
const r = res1[i];
|
const r = res1[i];
|
||||||
dataTree[key][i] = dataTree[key][i] || {};
|
dataTree[key][i] = dataTree[key][i] || {};
|
||||||
dataTree[key][i] = await nocoExecute(
|
|
||||||
requestObj[key] as XcRequest,
|
res[key].push(
|
||||||
r,
|
(dataTree[key][i] = await nocoExecute(
|
||||||
dataTree[key][i],
|
requestObj[key] as XcRequest,
|
||||||
Object.assign(
|
r,
|
||||||
{
|
dataTree[key][i],
|
||||||
nestedPage: rootArgs?.nestedPage,
|
Object.assign(
|
||||||
limit: rootArgs?.nestedLimit,
|
{
|
||||||
},
|
nestedPage: rootArgs?.nestedPage,
|
||||||
rootArgs?.nested?.[key] || {},
|
limit: rootArgs?.nestedLimit,
|
||||||
),
|
},
|
||||||
|
rootArgs?.nested?.[key] || {},
|
||||||
|
),
|
||||||
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
res[key] = dataTree[key];
|
|
||||||
} else if (res1) {
|
} else if (res1) {
|
||||||
// Handle single objects
|
// Handle single objects
|
||||||
res[key] = await nocoExecute(
|
res[key] = await nocoExecute(
|
||||||
@@ -217,7 +220,7 @@ const nocoExecuteSingle = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res[key]) {
|
if (Object.prototype.hasOwnProperty.call(res, key)) {
|
||||||
out[key] = await res[key];
|
out[key] = await res[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user