Skip to content

useDataCache

Available in Nuxt and Nitro.

This composable is available if the Data Cache feature is enabled. It allows you to store anything in cache.

Full Example

typescript
const route = useRoute()
const userId = route.params.id

const key = computed(() => 'get-user-' + userId)

const { data: weather } = await useAsyncData(async () => {
  const { value, addToCache } = await useDataCache(key.value)
  // Data is available from cache.
  // The value object has the correct type if provided.
  if (value) {
    return value
  }

  // Fetch data and add it to cache.
  const response = await $fetch('/api/get-user/' + userId)

  // Add it to cache, also providing cache tags and a max age.
  await addToCache(response, ['user:' + userId], 3600)
  return response
})

Arguments

key: string

The key for the cache item.

event?: H3Event

The optional H3Event event. This is not needed when the composable is called in a Nuxt app context (e.g. plugin, other composables, component).

When called in a Nitro server context, the argument is required.

Return Value

The composable returns a Promise that resolves to an object with the following properties:

value: T|undefined

The value from cache if found. The type is generic, you can provide it when calling useDataCache:

typescript
const { value } = await useDataCache<WeatherResponse>('weather')

addToCache: (data: any, tags?: string[], maxAge?: MaxAge, staleIfError?: MaxAge)

Use this method to add data to the cache for the given key. The data should be a string or an object that can be stringified to JSON.

The optional second argument allows you to define cache tags which can be later used to invalidate a cache item.

With the optional third argument you can define a max age for the cache item.

Released under the MIT License.