Get a peek at our latest innovations at Sanity Product Day on Dec 8th →

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 & 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.io: Get the most out of your content

Sanity.io is a platform to build websites and applications. It comes with great APIs that let you treat content like data. Free to get started, and pay-as-you-go on all plans. Find out more.