{"record":{"id":"ee02746364ba6515","repo":"mastra-ai/mastra","slug":"parent-object-must-be-a-single-relatednodeinfo-obj","errorCode":null,"errorMessage":"Parent object must be a single RelatedNodeInfo object","messagePattern":"Parent object must be a single RelatedNodeInfo object","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/rag/src/document/schema/node.ts","lineNumber":63,"sourceCode":"\n    return relationship;\n  }\n\n  get nextNode(): RelatedNodeInfo<T> | undefined {\n    const relationship = this.relationships[NodeRelationship.NEXT];\n\n    if (Array.isArray(relationship)) {\n      throw new Error('Next object must be a single RelatedNodeInfo object');\n    }\n\n    return relationship;\n  }\n\n  get parentNode(): RelatedNodeInfo<T> | undefined {\n    const relationship = this.relationships[NodeRelationship.PARENT];\n\n    if (Array.isArray(relationship)) {\n      throw new Error('Parent object must be a single RelatedNodeInfo object');\n    }\n\n    return relationship;\n  }\n\n  get childNodes(): RelatedNodeInfo<T>[] | undefined {\n    const relationship = this.relationships[NodeRelationship.CHILD];\n\n    if (!Array.isArray(relationship)) {\n      throw new Error('Child object must be a an array of RelatedNodeInfo objects');\n    }\n\n    return relationship;\n  }\n\n  abstract generateHash(): string;\n}\n","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/rag/src/document/schema/node.ts#L45-L81","documentation":"The BaseNode.parentNode getter reads the PARENT relationship and expects a single RelatedNodeInfo object. A node has at most one parent, so an array value throws.","triggerScenarios":"Accessing node.parentNode when relationships[NodeRelationship.PARENT] was assigned an array of RelatedNodeInfo.","commonSituations":"Hierarchical/chunked indexing code that mistakenly pushes multiple parents, or generic serialization that wraps every relationship in an array.","solutions":["Assign a single RelatedNodeInfo to relationships[NodeRelationship.PARENT].","If multiple candidates exist, pick/store one parent; model siblings via CHILD on the parent node instead.","Normalize relationship maps during deserialization before use."],"exampleFix":"// before\nnode.relationships[NodeRelationship.PARENT] = [parentInfo];\n// after\nnode.relationships[NodeRelationship.PARENT] = parentInfo;","handlingStrategy":"type-guard","validationCode":"const rel = node.relationships[NodeRelationship.PARENT];\nconst parent = rel !== undefined && !Array.isArray(rel) ? rel : undefined;","typeGuard":"const isSingleRelatedNodeInfo = (v: unknown): v is RelatedNodeInfo =>\n  v !== null && typeof v === 'object' && !Array.isArray(v) && 'nodeId' in v;","tryCatchPattern":"let parent;\ntry {\n  parent = node.parentNode;\n} catch (e) {\n  if (e instanceof Error && e.message.includes('Parent object must be')) {\n    const rel = node.relationships[NodeRelationship.PARENT];\n    parent = Array.isArray(rel) ? rel[0] : undefined;\n  } else throw e;\n}","preventionTips":["Enforce single-parent invariants in your indexing code.","Model multiple relations via the parent's CHILD array, not multiple parents.","Add a schema check on stored relationship maps before constructing nodes."],"tags":["data-structure","rag","relationships"],"backgroundTag":"invalid-relationship-shape","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}