{"record":{"id":"f8622455039bb2c8","repo":"payloadcms/payload","slug":"the-collection-with-slug-string-collectionslug-f86224","errorCode":null,"errorMessage":"The collection with slug ${String(collectionSlug)} can't be found. Update Operation.","messagePattern":"The collection with slug (.+?) can't be found\\. Update Operation\\.","errorType":"http","errorClass":"APIError","httpStatus":500,"severity":"error","filePath":"packages/payload/src/collections/operations/local/update.ts","lineNumber":247,"sourceCode":"    filePath,\n    limit,\n    overrideAccess = true,\n    overrideLock,\n    overwriteExistingFiles = false,\n    populate,\n    publishAllLocales,\n    select,\n    showHiddenFields,\n    sort,\n    trash = false,\n    unpublishAllLocales,\n    where,\n  } = options\n\n  const collection = payload.collections[collectionSlug]\n\n  if (!collection) {\n    throw new APIError(\n      `The collection with slug ${String(collectionSlug)} can't be found. Update Operation.`,\n    )\n  }\n\n  const req = await createLocalReq(options as CreateLocalReqOptions, payload)\n  req.file = file ?? (await getFileByPath(filePath!))\n\n  const args = {\n    id,\n    autosave,\n    collection,\n    data,\n    depth,\n    disableTransaction,\n    draft,\n    limit,\n    overrideAccess,\n    overrideLock,","sourceCodeStart":229,"sourceCodeEnd":265,"githubUrl":"https://github.com/payloadcms/payload/blob/00c58b35c0ed348ddc22daabf467b139727214fd/packages/payload/src/collections/operations/local/update.ts#L229-L265","documentation":"Thrown by the Local API `update` wrapper in packages/payload/src/collections/operations/local/update.ts:247 when `payload.update({ collection, where, data })` (many-doc form) or the single-doc form references a slug not in `payload.collections`. Defaults to HTTP 500. Fires before transaction setup, so no partial writes occur.","triggerScenarios":"Calling `payload.update({ collection: 'post', where: {...}, data })` with a typo (real slug `'posts'`); updating via a generic service that receives a slug from config that is out of sync; calling update before `payload.init()`.","commonSituations":"Slug typo or stale constant; collection renamed/removed; plugin not loaded; `as CollectionSlug` cast on dynamic input.","solutions":["Match the slug to the collection config's `slug` value exactly.","Validate dynamic slugs against `Object.keys(payload.collections)` before updating.","Ensure `payload.init()` resolved.","Remove `as CollectionSlug` casts so the compiler rejects unknown slugs."],"exampleFix":"// before\nawait payload.update({ collection: 'post', where: { id: { equals: id } }, data }) // slug is 'posts'\n\n// after\nawait payload.update({ collection: 'posts', where: { id: { equals: id } }, data })","handlingStrategy":"validation","validationCode":"function assertCollectionSlug(payload: Payload, slug: string): void {\n  if (!(slug in payload.collections)) {\n    throw new Error(`Unknown collection slug '${slug}'`)\n  }\n}\nassertCollectionSlug(payload, 'posts')\nawait payload.update({ collection: 'posts', where, data })","typeGuard":"const slugIsRegistered = (payload: Payload, slug: string): slug is CollectionSlug =>\n  slug in (payload.collections as Record<string, unknown>)\n\nif (slugIsRegistered(payload, slug)) {\n  await payload.update({ collection: slug, where, data })\n}","tryCatchPattern":"try {\n  await payload.update({ collection: slug, where, data })\n} catch (err) {\n  if (err instanceof APIError && /Update Operation/.test(err.message)) {\n    // unknown slug — correct it (note: also matches 'Restore Version'? no — different wording)\n  } else throw err\n}","preventionTips":["Validate dynamic slugs against payload.collections before updating.","Share slug constants between config and callers.","Avoid `as CollectionSlug` casts on untrusted input."],"tags":["local-api","collection","slug","update","configuration"],"backgroundTag":null,"analyzedSha":"00c58b35c0ed348ddc22daabf467b139727214fd","analyzedAt":"2026-08-12T20:45:03.758Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}