📆 Don't miss our Sanity Showcase virtual meetup on March 20th!

Post retrieval on my index page

9 replies
Last updated: Jan 1, 2021
Hi, I'm trying to make a simple blog using Sanity and I'm stuck on post retrieval on my index page. I'm currently writing this code in typescript + nextjs and here's a snippet on what I'm having problems with. I don't know how to specify a type for Posts. Is there an inbuilt type or do I have to make my own?
export default function Index(props) {
  return (
    <div>
      <h1>Welcome to a blog!</h1>
      {props.posts.map(
        ({ _id, title = '', slug = '', _updatedAt = '' }) =>
          slug && (
            <li key={_id}>
              <Link href="/blog/post/[slug]" as={`/blog/post/${slug.current}`}>
                <a>{title}</a>
              </Link>{' '}
              ({new Date(_updatedAt).toDateString()})
            </li>
          )
      )}
    </div>
  );
}

export async function getStaticProps() {
  const posts = await sanity.fetch(`*[_type == "post"]|order(publishedAt desc)`);

  console.log(posts);

  console.log(typeof posts);

  return {
    props: {
      posts: posts
    }
  };
}
Jan 1, 2021, 9:33 PM
you have to make your own, or use a tool that generate types. you could try out https://github.com/ricokahler/sanity-codegen if you don't want to type your own
Jan 1, 2021, 9:35 PM
I really appreciate that. Thank you!
Jan 1, 2021, 9:38 PM
Follow up question: Where can I find documentation about schemas since this generator requires a schema path?
Jan 1, 2021, 9:40 PM
do you mean general sanity schemas docs?
Jan 1, 2021, 9:41 PM
I believe that's what it requires, so yes
Jan 1, 2021, 9:42 PM
https://www.sanity.io/docs/schema-types
https://www.sanity.io/guides/how-to-configure-schemas
there are two sources about schema &amp; their types, I guess you can find much more on
sanity.io site
Jan 1, 2021, 9:46 PM
Ok, the second one is what I needed, thank you!
Jan 1, 2021, 9:47 PM
No worries!
Jan 1, 2021, 9:47 PM
Wasn't sure how to configure/structure schemas
Jan 1, 2021, 9:47 PM

Sanity– build remarkable experiences at scale

Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Was this answer helpful?

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
Rendering nested block contentJan 18, 2021
List Arrays - Is it Possible to Fill a List Array Within a Schema Asynchronously?Mar 16, 2021
TypeError: Cannot Read Properties of Null (Reading 'jsonType')Sep 28, 2022
Error in custom validation rule for schema in Slack threadAug 18, 2023
How to populate a list of values in a Sanity schema using a separate fileSep 6, 2021
Handling dynamic meta titles and descriptions in SanityFeb 25, 2021
Deleting a type A document caused an error when trying to remove type B from the schema.May 1, 2020
Error when adding color-input plugin to schemaApr 6, 2020
Hi, I need help with Iframe preview, I have a `route` schema with unique `slug` (`/lb/123`) and also I have `page` schema...Dec 21, 2020
I can't find the edit button to edit the image... can someone help?Dec 31, 2020

Related contributions

Turbo Start Sanity
- Template

The battle-tested Sanity template that powers Roboto Studio's websites

Go to Turbo Start Sanity

Schema UI - Next.js Sanity Starter
- Template

A Next.js starter template with Next.js 15, Tailwind CSS, shadcn/ui, and Sanity CMS with Live Editing. Get production-ready React components with matching Sanity schemas and queries. Build dynamic pages faster while keeping full control over customization.

Serge Ovcharenko
Go to Schema UI - Next.js Sanity Starter

The Swaddle
- Made with Sanity

A new brand identity to represent a more mature company, to signify The Swaddle’s evolution from publisher to production house, combined with an easier to navigate platform that can surface multiple content types - drawing readers through The Swaddle’s content offering.

Nightjar
Go to The Swaddle