👋 Next.js Conf 2024: Come build, party, run, and connect with us! See all events

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?