n8n-io/n8n · warning · OperationalError
Missing 'valueTextArray' for 'containsAll' operator.
Error message
Missing 'valueTextArray' for 'containsAll' operator.
What it means
OperationalError from buildFilter when operator is 'containsall' but valueTextArray is undefined. Identical mechanics to containsAny but for property.containsAll(...).
Source
Thrown at packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts:92
if (filter.valueString !== undefined) return property.equal(filter.valueString);
if (filter.valueNumber !== undefined) return property.equal(filter.valueNumber);
break;
case 'like':
if (filter.valueString === undefined) {
throw new OperationalError("Missing 'valueString' for 'like' operator.");
}
return property.like(filter.valueString);
case 'containsany':
if (filter.valueTextArray === undefined) {
throw new OperationalError("Missing 'valueTextArray' for 'containsAny' operator.");
}
return property.containsAny(filter.valueTextArray);
case 'containsall':
if (filter.valueTextArray === undefined) {
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.");View on GitHub (pinned to 5ac6606e81)
Solutions
- Provide valueTextArray: { operator: 'containsAll', path: ['tags'], valueTextArray: ['x','y'] }.
- Remove the filter unit if no array value exists.
- Validate filter structure upstream.
Example fix
// before: { operator: 'containsAll', path: ['tags'] }
// after: { operator: 'containsAll', path: ['tags'], valueTextArray: ['x','y'] } Defensive patterns
Strategy: validation
Validate before calling
if (f.operator.toLowerCase() === 'containsall' && (!Array.isArray(f.valueTextArray) || f.valueTextArray.length === 0)) { throw new Error("'containsAll' requires a non-empty valueTextArray"); } Type guard
function isContainsAllComplete(f: WeaviateFilterUnit): f is WeaviateFilterUnit & { valueTextArray: string[] } { return f.operator.toLowerCase() === 'containsall' && Array.isArray(f.valueTextArray) && f.valueTextArray.every(v => typeof v === 'string'); } Try / catch
try { buildFilter(unit) } catch (e) { if (/valueTextArray.*containsAll/.test(e.message)) { /* supply array */ } else throw e; } Prevention
- Validate containsAll arrays upstream with the same helper as containsAny.
- Refuse to emit a filter unit whose array value resolved to undefined.
- Centralize operator→required-field rules in one validator.
When it happens
Trigger: Filter unit { operator: 'containsall', path: [...], /* valueTextArray missing */ } reaches buildFilter.
Common situations: Same as containsAny: expression resolved to undefined, key omitted from JSON, or empty source collection.
Related errors
- Missing 'valueTextArray' for 'containsAny' operator.
- Missing 'valueString' for 'like' operator.
- Missing 'valueNumber' for 'greaterThan' operator.
- Missing 'valueNumber' for 'lessThan' operator.
- Missing 'valueBoolean' for 'isNull' operator.
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/a8416c7f2b645fa9.
Report an issue: GitHub.