{"record":{"id":"104fbb3a5a7caad0","repo":"n8n-io/n8n","slug":"missing-valuestring-for-like-operator","errorCode":null,"errorMessage":"Missing 'valueString' for 'like' operator.","messagePattern":"Missing 'valueString' for 'like' operator\\.","errorType":"exception","errorClass":"OperationalError","httpStatus":null,"severity":"warning","filePath":"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts","lineNumber":80,"sourceCode":"\tvalueNumber?: number;\n\tvalueGeoCoordinates?: GeoRangeFilter;\n};\n\nexport type WeaviateCompositeFilter = { AND: WeaviateFilterUnit[] } | { OR: WeaviateFilterUnit[] };\n\nfunction buildFilter(filter: WeaviateFilterUnit): FilterValue {\n\tconst { path, operator } = filter;\n\tconst property = weaviate.filter.byProperty(path[0]);\n\n\tswitch (operator.toLowerCase()) {\n\t\tcase 'equal':\n\t\t\tif (filter.valueString !== undefined) return property.equal(filter.valueString);\n\t\t\tif (filter.valueNumber !== undefined) return property.equal(filter.valueNumber);\n\t\t\tbreak;\n\n\t\tcase 'like':\n\t\t\tif (filter.valueString === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueString' for 'like' operator.\");\n\t\t\t}\n\t\t\treturn property.like(filter.valueString);\n\n\t\tcase 'containsany':\n\t\t\tif (filter.valueTextArray === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueTextArray' for 'containsAny' operator.\");\n\t\t\t}\n\t\t\treturn property.containsAny(filter.valueTextArray);\n\n\t\tcase 'containsall':\n\t\t\tif (filter.valueTextArray === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueTextArray' for 'containsAll' operator.\");\n\t\t\t}\n\t\t\treturn property.containsAll(filter.valueTextArray);\n\n\t\tcase 'greaterthan':\n\t\t\tif (filter.valueNumber === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueNumber' for 'greaterThan' operator.\");","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts#L62-L98","documentation":"OperationalError from buildFilter when a Weaviate filter unit uses operator 'like' but valueString is undefined. The like operator requires a string pattern, so n8n refuses to build the filter rather than sending an invalid query.","triggerScenarios":"A Weaviate metadata filter is supplied as { operator: 'like', path: [...], /* valueString missing */ }. buildFilter switches on operator.toLowerCase() === 'like', finds filter.valueString === undefined, and throws.","commonSituations":"UI/expression produced a filter object with the 'like' operator but the value field was left empty or mapped to an undefined expression; JSON filter pasted without the valueString key; downstream parameter mapping dropped the field.","solutions":["Provide filter.valueString for any 'like' filter, e.g. { operator: 'like', path: ['title'], valueString: 'news*' }.","If the value is genuinely empty, remove that filter unit or pick an operator that does not need a value.","Validate the filter object shape before the workflow runs the Weaviate node."],"exampleFix":"// before: { operator: 'like', path: ['title'] }\n// after:  { operator: 'like', path: ['title'], valueString: 'repo*' }","handlingStrategy":"validation","validationCode":"function assertLikeFilter(f: WeaviateFilterUnit) { if (f.operator.toLowerCase() === 'like' && f.valueString === undefined) throw new Error(\"'like' requires valueString\"); }","typeGuard":"function isLikeFilterComplete(f: WeaviateFilterUnit): f is WeaviateFilterUnit & { operator: 'like'; valueString: string } { return f.operator.toLowerCase() === 'like' && typeof f.valueString === 'string'; }","tryCatchPattern":"try { buildFilter(unit) } catch (e) { if (/Missing 'valueString' for 'like'/.test(e.message)) { /* prompt user for the like pattern */ } else throw e; }","preventionTips":["Validate each filter unit's value field against its operator before sending.","Drive filter construction through a typed builder, not free-form JSON.","Treat empty 'like' values as a UI validation error, not a runtime throw."],"tags":["weaviate","filter","validation","operator"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}