0
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.
2
Which line is showing the error?
36 mins ago
const course = await this.courseService.findOne({ id: variables.courseId });
in this line27 mins ago