n8n-io/n8n · warning · OperationalError

Missing 'valueBoolean' for 'isNull' operator.

Error message

Missing 'valueBoolean' for 'isNull' operator.

What it means

OperationalError from buildFilter when operator is 'isnull' but valueBoolean is undefined. Despite the name, n8n's isNull branch calls property.isNull(filter.valueBoolean), so a boolean value is mandatory to build the filter.

Source

Thrown at packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts:110

				throw new OperationalError("Missing 'valueTextArray' for 'containsAll' operator.");
			}
			return property.containsAll(filter.valueTextArray);

		case 'greaterthan':
			if (filter.valueNumber === undefined) {
				throw new OperationalError("Missing 'valueNumber' for 'greaterThan' operator.");
			}
			return property.greaterThan(filter.valueNumber);

		case 'lessthan':
			if (filter.valueNumber === undefined) {
				throw new OperationalError("Missing 'valueNumber' for 'lessThan' operator.");
			}
			return property.lessThan(filter.valueNumber);

		case 'isnull':
			if (filter.valueBoolean === undefined) {
				throw new OperationalError("Missing 'valueBoolean' for 'isNull' operator.");
			}
			return property.isNull(filter.valueBoolean);

		case 'withingeorange':
			if (!filter.valueGeoCoordinates) {
				throw new OperationalError("Missing 'valueGeoCoordinates' for 'withinGeoRange' operator.");
			}
			return property.withinGeoRange(filter.valueGeoCoordinates);

		default:
			throw new OperationalError(`Unsupported operator: ${operator}`);
	}

	throw new OperationalError(`No valid filter value provided for operator: ${operator}`);
}

export function parseCompositeFilter(
	filter: WeaviateCompositeFilter | WeaviateFilterUnit,

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Provide valueBoolean: { operator: 'isNull', path: ['deleted'], valueBoolean: true }.
  2. If you intended a value-less null check, note this build requires a boolean — supply true/false explicitly.
  3. Validate filter units so 'isnull' always carries valueBoolean.

Example fix

// before: { operator: 'isNull', path: ['deleted'] }
// after:  { operator: 'isNull', path: ['deleted'], valueBoolean: true }
Defensive patterns

Strategy: validation

Validate before calling

if (f.operator.toLowerCase() === 'isnull' && typeof f.valueBoolean !== 'boolean') { throw new Error("'isNull' requires a boolean valueBoolean"); }

Type guard

function isIsNullComplete(f: WeaviateFilterUnit): f is WeaviateFilterUnit & { valueBoolean: boolean } { return f.operator.toLowerCase() === 'isnull' && typeof f.valueBoolean === 'boolean'; }

Try / catch

try { buildFilter(unit) } catch (e) { if (/valueBoolean.*isNull/.test(e.message)) { /* set boolean */ } else throw e; }

Prevention

When it happens

Trigger: Filter unit { operator: 'isnull', path: [...], /* valueBoolean missing */ } reaches buildFilter.

Common situations: User assumed isNull needs no value; expression for the boolean resolved undefined; JSON filter omitted valueBoolean.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/12757949d4a7e1b9. Report an issue: GitHub.