diff --git a/packages/nodes-base/nodes/DataTable/actions/row/get.operation.ts b/packages/nodes-base/nodes/DataTable/actions/row/get.operation.ts index b60a461667..d107a2105d 100644 --- a/packages/nodes-base/nodes/DataTable/actions/row/get.operation.ts +++ b/packages/nodes-base/nodes/DataTable/actions/row/get.operation.ts @@ -5,6 +5,7 @@ import type { INodeProperties, } from 'n8n-workflow'; +import { ROWS_LIMIT_DEFAULT } from '../../common/constants'; import { executeSelectMany, getSelectFields } from '../../common/selectMany'; import { getDataTableProxyExecute } from '../../common/utils'; @@ -19,15 +20,29 @@ const displayOptions: IDisplayOptions = { export const description: INodeProperties[] = [ ...getSelectFields(displayOptions), + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions, + default: false, + description: 'Whether to return all results or only up to a given limit', + }, { displayName: 'Limit', name: 'limit', type: 'number', + displayOptions: { + ...displayOptions, + show: { + ...displayOptions.show, + returnAll: [false], + }, + }, typeOptions: { minValue: 1, }, - displayOptions, - default: null, + default: ROWS_LIMIT_DEFAULT, description: 'Max number of results to return', }, ]; diff --git a/packages/nodes-base/nodes/DataTable/common/constants.ts b/packages/nodes-base/nodes/DataTable/common/constants.ts index 29236d5f87..bdb3134c94 100644 --- a/packages/nodes-base/nodes/DataTable/common/constants.ts +++ b/packages/nodes-base/nodes/DataTable/common/constants.ts @@ -3,6 +3,8 @@ import type { DataStoreColumnJsType } from 'n8n-workflow'; export const ANY_CONDITION = 'anyCondition'; export const ALL_CONDITIONS = 'allConditions'; +export const ROWS_LIMIT_DEFAULT = 50; + export type FilterType = typeof ANY_CONDITION | typeof ALL_CONDITIONS; export type FieldEntry = diff --git a/packages/nodes-base/nodes/DataTable/common/selectMany.ts b/packages/nodes-base/nodes/DataTable/common/selectMany.ts index d208172161..f9117706ca 100644 --- a/packages/nodes-base/nodes/DataTable/common/selectMany.ts +++ b/packages/nodes-base/nodes/DataTable/common/selectMany.ts @@ -8,7 +8,7 @@ import type { INodeProperties, } from 'n8n-workflow'; -import { ALL_CONDITIONS, ANY_CONDITION, type FilterType } from './constants'; +import { ALL_CONDITIONS, ANY_CONDITION, ROWS_LIMIT_DEFAULT, type FilterType } from './constants'; import { DATA_TABLE_ID_FIELD } from './fields'; import { buildGetManyFilter, isFieldArray, isMatchType } from './utils'; @@ -125,7 +125,8 @@ export async function executeSelectMany( const PAGE_SIZE = 1000; const result: Array<{ json: DataStoreRowReturn }> = []; - const limit = ctx.getNodeParameter('limit', index, 0); + const returnAll = ctx.getNodeParameter('returnAll', index, false); + const limit = !returnAll ? ctx.getNodeParameter('limit', index, ROWS_LIMIT_DEFAULT) : 0; let expectedTotal: number | undefined; let skip = 0;