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
- Provide valueBoolean: { operator: 'isNull', path: ['deleted'], valueBoolean: true }.
- If you intended a value-less null check, note this build requires a boolean — supply true/false explicitly.
- 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
- Note that isNull in this builder requires valueBoolean — document this surprise for users.
- Default the boolean control to true/false, never undefined.
- Add an integration test covering the isNull branch.
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
- Missing 'valueString' for 'like' operator.
- Missing 'valueTextArray' for 'containsAny' operator.
- Missing 'valueTextArray' for 'containsAll' operator.
- Missing 'valueNumber' for 'greaterThan' operator.
- Missing 'valueNumber' for 'lessThan' operator.
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/12757949d4a7e1b9.
Report an issue: GitHub.