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

  1. Provide valueTextArray: { operator: 'containsAll', path: ['tags'], valueTextArray: ['x','y'] }.
  2. Remove the filter unit if no array value exists.
  3. 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

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


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