Jayesh Ahirrao
Jayesh Ahirrao

Reputation: 1

Wierdest behaviour, prismaClient when used on diff lines gives error of joi validation,

i am using prisma and graphql i was refactoring the code when i use direct query to prismaCLient it works but if i use the same query from TweetService which does same i get DB_URL required which i load in config using Joi validation

all other queries in TweetService are working fine.

i am attaching the video for ref

Here are some examples: Wokrs:

  1. ==>
const nestedRelationResolver = {
    User: {
        // tweets: (parent: User) => prismaClient.tweet.findMany({where: {userId : parent.id} , orderBy: { createdAt: "desc" }}), 
        tweets: async (parent: User) => {
            // const tweet = await TweetService.getAllForUser(parent.id, "desc");
            // return tweet;
            return await prismaClient.tweet.findMany({ where: { userId: parent.id }, orderBy: { createdAt: "desc" } });
        }
        // tweets: async (parent: User) => await TweetService.getAllForUser(parent.id, "desc"),
    }
}
  1. ==>
const nestedRelationResolver = {
    User: {
        // tweets: (parent: User) => prismaClient.tweet.findMany({where: {userId : parent.id} , orderBy: { createdAt: "desc" }}), 
        tweets: async (parent: User) => {
            const tweet = await TweetService.getAllForUser(parent.id, "desc");
            return tweet;
            return await prismaClient.tweet.findMany({ where: { userId: parent.id }, orderBy: { createdAt: "desc" } });
        }
        // tweets: async (parent: User) => await TweetService.getAllForUser(parent.id, "desc"),
    }
}
  1. ==>
const nestedRelationResolver = {
    User: {
        tweets: (parent: User) => prismaClient.tweet.findMany({where: {userId : parent.id} , orderBy: { createdAt: "desc" }}), 
        // tweets: async (parent: User) => {
        //     const tweet = await TweetService.getAllForUser(parent.id, "desc");
        //     return tweet;
        //     return await prismaClient.tweet.findMany({ where: { userId: parent.id }, orderBy: { createdAt: "desc" } });
        // }
        // tweets: async (parent: User) => await TweetService.getAllForUser(parent.id, "desc"),
    }
}

Does not wokr :

  1. ==>
const nestedRelationResolver = {
    User: {
        // tweets: (parent: User) => prismaClient.tweet.findMany({where: {userId : parent.id} , orderBy: { createdAt: "desc" }}), 
        // tweets: async (parent: User) => {
        //     const tweet = await TweetService.getAllForUser(parent.id, "desc");
        //     return tweet;
        //     return await prismaClient.tweet.findMany({ where: { userId: parent.id }, orderBy: { createdAt: "desc" } });
        // }
        tweets: async (parent: User) => await TweetService.getAllForUser(parent.id, "desc"),
    }
}
  1. ==>
const nestedRelationResolver = {
    User: {
        // tweets: (parent: User) => prismaClient.tweet.findMany({where: {userId : parent.id} , orderBy: { createdAt: "desc" }}), 
        tweets: async (parent: User) => {
            const tweet = await TweetService.getAllForUser(parent.id, "desc");
            return tweet;
            // return await prismaClient.tweet.findMany({ where: { userId: parent.id }, orderBy: { createdAt: "desc" } });
        }
        // tweets: async (parent: User) => await TweetService.getAllForUser(parent.id, "desc"),
    }
}

even if i remove return and await its fine when i remove the statemtn it gives error

enter image description here

vid for ref Youtube

Upvotes: 0

Views: 20

Answers (0)

Related Questions