Skip to content

Fields of type reference should be able to embed their data #86

Description

@seancdavis

Given the following config:

const Category = defineDocumentType(() => ({
  name: 'Category',
  filePathPattern: 'categories/*.md',
  bodyType: 'none',
  fields: {
    title: { type: 'string', required: true },
  },
}))

const Doc = defineDocumentType(() => ({
  name: 'Doc',
  filePathPattern: '**/*.mdx',
  bodyType: 'mdx',
  fields: {
    title: { type: 'string', required: true },
    category: { type: 'reference', of: Category }
  },
}))

export default makeSource({
  contentDirPath: 'content',
  documentTypes: [Doc, Category],
})

And the following content files:

content/categories/a.md

---
title: My First Category
---

content/docs/index.mdx

---
title: Home Page
category: categories/a.md
---

The output document would have the following:

{
  "title": "Home Page",
  "category": "categories/a.md",
  // ...
}

It would be nice to (optionally) embed the category data directly in the output document. Otherwise, I have to defer that logic to my application. Being that it's data manipulation, it seems right that Contentlayer would handle this.

I'd rather see the output like this:

{
  "title": "Home Page",
  "category": {
    "title": "My First Category"
  },
  // ...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions