more sanity
This commit is contained in:
parent
7ccd7e5b8c
commit
dc8baf8d18
@ -1,7 +0,0 @@
|
|||||||
<script>
|
|
||||||
export let data;
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h2>{data.post.title}</h2>
|
|
||||||
<p>data.</p>
|
|
33
src/lib/queries.js
Normal file
33
src/lib/queries.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* Example of how you could re-use GROQ queries across different contexts with Javascript.
|
||||||
|
* As your schema evolves, this pattern will be useful to keep your data in sync across all surfaces.
|
||||||
|
*/
|
||||||
|
export function getPostsQuery(extraFilter) {
|
||||||
|
return /* groq */ `*[
|
||||||
|
_type == "post" &&
|
||||||
|
publishedAt < now()
|
||||||
|
${extraFilter ? `&& ${extraFilter}` : ''}
|
||||||
|
] | order(publishedAt desc) {
|
||||||
|
title,
|
||||||
|
slug,
|
||||||
|
coverImage,
|
||||||
|
_createdAt,
|
||||||
|
_updatedAt,
|
||||||
|
body,
|
||||||
|
}`
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Insert the return component calling `getContent()` below
|
||||||
|
/**
|
||||||
|
* You can also re-use parts of projections as fragments.
|
||||||
|
* In this case, we're defining that, to render an author card, we need their name, slug & image.
|
||||||
|
*/
|
||||||
|
export const POST_CARD_FRAGMENT = `
|
||||||
|
title,
|
||||||
|
slug,
|
||||||
|
coverImage,
|
||||||
|
_createdAt,
|
||||||
|
_updatedAt,
|
||||||
|
body,
|
||||||
|
`
|
23
src/routes/learnings/+page.js
Normal file
23
src/routes/learnings/+page.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { client } from '$lib/sanity/client.js'
|
||||||
|
import { POST_CARD_FRAGMENT, getPostsQuery } from '$lib/queries.js'
|
||||||
|
|
||||||
|
// Fetch all valid posts & authors to display in the homepage
|
||||||
|
export async function load() {
|
||||||
|
const data = await client.fetch(/* groq */ `{
|
||||||
|
"posts": ${getPostsQuery()},
|
||||||
|
"post": *[_type == "post"] {
|
||||||
|
${POST_CARD_FRAGMENT}
|
||||||
|
}
|
||||||
|
}`)
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
return {
|
||||||
|
status: 200,
|
||||||
|
body: data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: 404
|
||||||
|
}
|
||||||
|
}
|
@ -1,28 +1,5 @@
|
|||||||
<script>
|
<script>
|
||||||
import { client } from '/src/utils/sanity/client.js'
|
export let data;
|
||||||
|
|
||||||
// Fetch content with GROQ
|
|
||||||
async function getContent() {
|
|
||||||
const CONTENT_QUERY = `*[_type == "project"] {
|
|
||||||
...,
|
|
||||||
coverImage {
|
|
||||||
...,
|
|
||||||
asset->
|
|
||||||
},
|
|
||||||
duration {
|
|
||||||
...
|
|
||||||
},
|
|
||||||
tags[],
|
|
||||||
body
|
|
||||||
}
|
|
||||||
`
|
|
||||||
const content = await client.fetch(CONTENT_QUERY)
|
|
||||||
return content
|
|
||||||
}
|
|
||||||
const posts = getContent();
|
|
||||||
// Log content to console
|
|
||||||
getContent().then(content => console.log(content))
|
|
||||||
|
|
||||||
// Insert the return component calling `getContent()` below
|
|
||||||
</script>
|
</script>
|
||||||
<p>{posts.title}</p>
|
<p>{data.posts}</p>
|
Loading…
Reference in New Issue
Block a user