skip to Main Content

I’m trying to set up Redis caching for my nestjsgraphql project by following this official guide and this tutorial. I’m following the exact steps that are mentioned but I’m getting this error that Property 'get' does not exist on type 'Cache'.

Here’s the exact code

import {User} from './user.entity'
import {Resolver, Query, ResolveField, Args, Parent, Mutation} from '@nestjs/graphql'
import { UsersService } from './users.service';
import { PostsService } from '../posts/posts.service';
import { CurrentUser } from 'src/auth/auth.resolver';
import { CACHE_MANAGER, Inject, UseGuards } from '@nestjs/common';
import { GqlAuthGuard } from 'src/auth/graphql-auth.guard';
import { Cache } from 'cache-manager'; <---------this is you need to import
@Resolver(of => User)
export class UsersResolver {
  constructor(
    @Inject(CACHE_MANAGER) private cacheManager: Cache,
    private usersService: UsersService,
    private postsService: PostsService,
  ) {}

  @Query()
  async getUsers() {
    const value = await this.cacheManager.get('key'); //Now .get property is working.
    if(value){                                       
      console.log({                                  
        data: value,                                 
        loadsFrom: 'redis cache'
      })
    }
    return await this.usersService.findAll();
  }
}

3

Answers


  1. There isn’t much code but one thing that comes to my mind is that Nest couldn’t resolve the dependency or it resolved it wrongly. I don’t see any import of type Cache look at the docs you have provided (quote below) maybe it will help.

    The Cache class is imported from the cache-manager, while CACHE_MANAGER token from the @nestjs/common package.

    Login or Signup to reply.
  2. Import the Cache used in

    @Inject(CACHE_MANAGER) private cacheManager: Cache

    from cache-manager

    import { Cache } from ‘cache-manager’;

    Login or Signup to reply.
  3. Thanks @Snehasish Dawn, I would upvote your answer if I could…
    Cache is a default interface of typescript so it is not imported from cache-manager by default by the IDE.
    (link to typescript documentation)

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search