{"record":{"id":"c1a69d64a9e07f3d","repo":"n8n-io/n8n","slug":"function-parameter-isn-t-supported-in-the-paramete","errorCode":null,"errorMessage":"Function parameter isn't supported in the parameters. Please check \"${key}\" parameter.","messagePattern":"Function parameter isn't supported in the parameters\\. Please check \"(.+?)\" parameter\\.","errorType":"exception","errorClass":"TypeORMError","httpStatus":null,"severity":"error","filePath":"packages/@n8n/typeorm/src/query-builder/QueryBuilder.ts","lineNumber":357,"sourceCode":"\t\t\treturn !!entityMetadata.findRelationWithPropertyPath(relation);\n\t\t});\n\t}\n\n\t/**\n\t * Check the existence of a parameter for this query builder.\n\t */\n\thasParameter(key: string): boolean {\n\t\treturn this.parentQueryBuilder?.hasParameter(key) || key in this.expressionMap.parameters;\n\t}\n\n\t/**\n\t * Sets parameter name and its value.\n\t *\n\t * The key for this parameter may contain numbers, letters, underscores, or periods.\n\t */\n\tsetParameter(key: string, value: any): this {\n\t\tif (typeof value === 'function') {\n\t\t\tthrow new TypeORMError(\n\t\t\t\t`Function parameter isn't supported in the parameters. Please check \"${key}\" parameter.`,\n\t\t\t);\n\t\t}\n\n\t\tif (!key.match(/^([A-Za-z0-9_.]+)$/)) {\n\t\t\tthrow new TypeORMError(\n\t\t\t\t'QueryBuilder parameter keys may only contain numbers, letters, underscores, or periods.',\n\t\t\t);\n\t\t}\n\n\t\tif (this.parentQueryBuilder) {\n\t\t\tthis.parentQueryBuilder.setParameter(key, value);\n\t\t}\n\n\t\tthis.expressionMap.parameters[key] = value;\n\t\treturn this;\n\t}\n","sourceCodeStart":339,"sourceCodeEnd":375,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/typeorm/src/query-builder/QueryBuilder.ts#L339-L375","documentation":"QueryBuilder.setParameter() throws TypeORMError when the value argument is a function. SQL parameter values must be serializable scalars/objects (string, number, boolean, Date, buffer, array); a function cannot be bound to a prepared-statement parameter and would produce nonsensical SQL. The check is a hard guard before storing the value in expressionMap.parameters.","triggerScenarios":"Calling .setParameter('key', someFunction) or .setParameters({ key: fn }). Also when passing a value that is unexpectedly a function due to a missing invocation, e.g. .setParameter('now', Date.now) instead of Date.now().","commonSituations":"Forgetting to invoke a function (Date.now vs Date.now()). Passing a comparator or callback by mistake. Dynamic parameter building that accidentally includes a function from user input.","solutions":["Invoke functions before passing: Date.now() not Date.now.","Coerce/serialize the value to a primitive, Date, or array before setParameter.","If you need dynamic SQL fragments, use string interpolation in the where clause with proper escaping, not a parameter.","Audit setParameters object values for function members."],"exampleFix":"// before\nqb.andWhere('u.createdAt > :now', {})\n  .setParameter('now', Date.now); // function, throws\n\n// after\nqb.andWhere('u.createdAt > :now', {})\n  .setParameter('now', Date.now());","handlingStrategy":"validation","validationCode":"function isBindableParam(v: unknown): boolean {\n  return v == null || ['string','number','boolean','bigint'].includes(typeof v) || v instanceof Date || Buffer.isBuffer(v) || Array.isArray(v);\n}\nif (!isBindableParam(value)) throw new Error('parameter value must be a scalar/Date/Buffer/array, got function');","typeGuard":"function isBindableValue(v: unknown): v is string | number | boolean | Date | Buffer | unknown[] | null {\n  return v == null || typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean' || v instanceof Date || Buffer.isBuffer(v) || Array.isArray(v);\n}","tryCatchPattern":null,"preventionTips":["Invoke functions before passing as parameters (Date.now() not Date.now).","Validate parameter values are scalars/Date/Buffer/array before setParameter.","Use string interpolation for dynamic SQL fragments, not parameters.","Audit setParameters object values for function members."],"tags":["query-builder","parameters","validation"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}