Skip to content

Nest JS: Object is possibly 'undefined' in GraphQL #265

@aldoprogrammer

Description

@aldoprogrammer

I tried to make the subscription update course in the nest js, but it turns out error Object is possibly 'undefined' in this line of code const course = await this.courseService.findOne({ id: variables.courseId }); below is my course.resolver.ts

@Subscription('courseUpdated', {
    resolve: (value) => value,
    filter: async (payload, variables) => {
      const course = await this.courseService.findOne({ id: variables.courseId });
      if (!course) {
        throw new NotFoundException('Course not found');
      }
      if (course.creatorId !== variables.userId) {
        throw new ForbiddenException('Course not owned by you');
      }
      return payload.courseId === variables.courseId;
    },
  })
  courseUpdated(
    @Args('courseId') courseId: string,
    @Args('userId') userId: string,
  ) {
    return pubSub.asyncIterator(`course:${courseId}`);
  }

Here is the piece of code in my course.graphql

type Course {
  id: String
  title: String
  objective: [String!]
  description: String!
  language: String
  category: String!
  tone: String!
  modality: String!
  classSize: String!
  topics: [String!]
  duration: Int!
  durationLesson: Int!
  creatorId: String!

  outline: CourseOutline
  detailedOutline: CourseDetailedOutline

  createdAt: DateTime!
  updatedAt: DateTime!

  audience: Audience!
}

input UpdateCourse {
  title: String
  objective: [String!]
  description: String
  language: String
  category: String
  tone: String
  modality: String
  classSize: String
  topics: [String!]
  duration: Int
  durationLesson: Int
  audience: CreateAudienceInput

  outline: UpdateCourseOutline
  detailedOutline: UpdateCourseDetailedOutline
}

type Subscription {
     courseUpdated(courseId: String!): Course!
    }

I read a lot on stackoverflow but still couldn't solve it. Yes indeed some of the value is optional, but how to solve it. I also tried the chaining option like this const course = await this.courseService.findOne({ id: variables.courseId })?.id; but still does not work

System:

 "graphql-subscriptions": "2.0.0",
"@nestjs/cli": "^10.1.16",
"@nestjs/graphql": "^12.0.8"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions