fix: nocoExecute - lookup related fix

This commit is contained in:
Pranav C
2026-01-27 15:29:57 +05:30
parent 321f5d5de7
commit 4832880a7f
2 changed files with 26 additions and 23 deletions

View File

@@ -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 };

View File

@@ -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];
} }
} }