hcengineering/platform · warning
Couldn't find the parent document meta with id: ${parentDocO
Error message
Couldn't find the parent document meta with id: ${parentDocObj.attachedTo} What it means
A controlled document, template, or folder references a parent document via parentDocObj.attachedTo, but no ProjectMeta object exists with that id. getParentPath needs the parent's ProjectMeta to build the breadcrumb path (parent meta plus ancestors). It logs a warning and returns an empty array, degrading gracefully instead of throwing.
Source
Thrown at plugins/controlled-documents/src/docutils.ts:50
import documents from './plugin'
import { getDocumentId, getFirstRank, TEMPLATE_PREFIX } from './utils'
async function getParentPath (client: TxOperations, parent: Ref<ProjectDocument>): Promise<Array<Ref<DocumentMeta>>> {
const parentDocObj = await client.findOne(documents.class.ProjectDocument, {
_id: parent
})
if (parentDocObj === undefined) {
console.warn(`Couldn't find the parent project document object with id: ${parent}`)
return []
}
const parentMeta = await client.findOne(documents.class.ProjectMeta, {
_id: parentDocObj.attachedTo
})
if (parentMeta === undefined) {
console.warn(`Couldn't find the parent document meta with id: ${parentDocObj.attachedTo}`)
return []
}
return [parentMeta.meta, ...parentMeta.path]
}
export async function createControlledDocFromTemplate (
client: TxOperations,
templateId: Ref<DocumentTemplate> | undefined,
documentId: Ref<ControlledDocument>,
spec: AttachedData<ControlledDocument>,
space: Ref<DocumentSpace>,
project: Ref<Project> | undefined,
parent: Ref<ProjectDocument> | undefined,
docClass: Ref<Class<ControlledDocument>> = documents.class.ControlledDocument
): Promise<{ seqNumber: number, success: boolean }> {
if (templateId == null) {
return { seqNumber: -1, success: false }View on GitHub (pinned to 63e28dc964)
Solutions
- Verify the parent ProjectMeta exists (client.findOne(documents.class.ProjectMeta, { _id: parent.attachedTo })) before creating the child document.
- Fix the caller so it passes the metadata object (with correct attachedTo) rather than the raw document.
- Check for concurrent deletions or failed parent commits and re-create the missing parent meta.
- Handle the empty return value: downstream code building paths should treat [] as 'no parent path' rather than proceeding with invalid assumptions.
Example fix
// before
await createControlledDocMetadata(client, { parent: { attachedTo: someDocumentId } })
// after
const parentMeta = await client.findOne(documents.class.ProjectMeta, { _id: someDocumentId })
if (parentMeta === undefined) throw new Error('parent meta missing')
await createControlledDocMetadata(client, { parent: { attachedTo: parentMeta._id } }) Defensive patterns
Strategy: validation
Validate before calling
const parentMeta = await client.findOne(documents.class.ProjectMeta, { _id: parent.attachedTo })
if (parentMeta === undefined) throw new Error(`parent meta ${parent.attachedTo} not found`) Type guard
function hasParentMeta(obj: any): obj is { attachedTo: string } {
return obj != null && typeof obj.attachedTo === 'string' && obj.attachedTo.length > 0
} Try / catch
const path = await getParentPath(client, parentDocObj)
if (path.length === 0) {
// parent meta missing: treat as top-level or abort
return fallbackPath
} Prevention
- Always create the parent ProjectMeta before attaching child documents.
- Pass the metadata object, not the raw document, as parent.
- Treat an empty returned path as a signal to stop or fall back.
When it happens
Trigger: Calling createControlledDocMetadata, createDocumentTemplateMetadata, or createNewFolder with a `parent` object whose `attachedTo` is undefined/null, points to a deleted ProjectMeta, or was never created (e.g. parent folder created without its metadata commit).
Common situations: Passing a document id instead of the metadata object; the parent was removed by another user concurrently; migrations or partial commits left documents attached to nonexistent meta records.
Related errors
- Cannot resolve a document for meta ${meta}
- Couldn't find the parent project document object with id: ${
- Parent not found: ${issue.clickupParentId} (for task: ${clic
- Project not found: ${issue.clickupProjectName} (for task: ${
- Task cannot be imported: ${clickupId} (No parent)
AI-assisted analysis of hcengineering/platform@63e28dc964 (2026-08-29).
Data as JSON: /api/errors/111ba26e51357d37.
Report an issue: GitHub.