
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeThis is a common issue that usually happens when your query is returning documents but your projection isn't correctly accessing the fields you need. Here are the most likely causes and solutions:
When you get empty objects back, it typically means your projection is referencing fields that don't exist on those documents. Make sure you're projecting the actual field names in your schema:
// ❌ This might return empty objects if fields don't match
*[_type == "article"][0..n]{
heading,
description
}
// ✅ Use the exact field names from your schema
*[_type == "article"][0..n]{
title,
body,
publishedAt
}Double-check that your _type filter matches exactly what's in your dataset. Type names are case-sensitive:
// Make sure this matches your schema
*[_type == "article"]You can verify this by running a simpler query first:
// See what fields are actually available
*[_type == "article"][0]If you're trying to access nested fields or references, make sure you're using the correct syntax:
*[_type == "article"][0..n]{
title,
"authorName": author->name, // Use -> to dereference references
"categoryTitle": category->title
}Sometimes the documents exist but don't have the fields populated yet. You can inspect what's actually in your documents using Sanity's Vision plugin in your Studio, or by querying without a projection:
*[_type == "article"][0..3]This will show you the raw document structure so you can see exactly what fields are available.
Make sure you're using the correct slice syntax for limiting results. According to the GROQ pipeline components documentation, you should use two dots (..) for inclusive slicing:
*[_type == "article"][0..9] // Gets first 10 articles (indices 0-9, both inclusive)If you want to exclude the right-hand index, use three dots (...):
*[_type == "article"][0...10] // Gets first 10 articles (indices 0-9, excludes index 10)Note that ranges are zero-based. With two dots, both indices are included; with three dots, the right index is excluded.
The most common fix is ensuring your projection field names match exactly what's in your schema. Try running this diagnostic query first:
*[_type == "article"][0..2]This will show you the full document structure without any projection, so you can see all available fields. Then adjust your projection to match the actual field names.
If you share your actual query and schema structure, the community can help pinpoint the exact issue!
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store