arackaf / mongo-graphql-starter

Creates a fully functioning, performant, extensible GraphQL endpoint from a Mongo DB. Supports middleware, Mongo 4 transactions.
MIT License
423 stars 29 forks source link

Mongoose Model Support Attempt 1 - Failed #71

Open natac13 opened 4 years ago

natac13 commented 4 years ago

Hey @arackaf I was really trying to get the support for Mongoose models done so that I can use this library rather than my hack job of it. Plus this can finish #2. However I have run into a few problems that I am hoping you can help with.

I have duplicated all the tests from testProject1 to testProject11 as per your instructions My issue right now is trying to get the embedded Author document to work with Book Model. For some reason I cannot get the generated GraphQL to set the Author for the get type() function.

Please look over test/testProject11/projectSetup.js test/mongooseHelpers/* And on lines 261 & 301 of src/mongooseHelpers.js for where I am attempting to use the arrayOf and objectOf types

PS I have borrowed heavily from graphql-compose-mongoose, as I am not a 'power' user of Mongoose. Especially the convertTypes file.

arackaf commented 4 years ago

@natac13 howdy - thanks for the PR. I'll try to get to this as soon as possible - probably over the weekend. If you can think of any other context that might be helpful, feel free to add it :)

natac13 commented 4 years ago

No problem. Ill keep trying as well!

Note most of the added files are just me copying the testProject1folder to start the testProject11 folder

natac13 commented 4 years ago

From my last commit you can see that I am getting most of the structure correct. Except when it comes to the sub documents. As the dataTypes.js functions will modify the existing type object. I am not sure how to do this when I just take in a mongoose model.

You can see from my test the difference in returned values.

natac13 commented 4 years ago

If you run the test now I am trying to just generate the graphql from createGraphqlSchema, by passing in a mongoose option flag. It works with just Author, however when I do Author and Books the Book authors and primaryAuthor get type() do no populate as expected.

arackaf commented 4 years ago

Ugh - this slipped my mind this weekend - sorry. Will look this week.

arackaf commented 4 years ago

Ok I'm trying to find the point at which this breaks, but I'm having a hard time. When running test suite 11 I get this

You provide incorrect mongoose model to createMGSOutput(). Correct model should contain modelName property.

The line numbers from your original comment no long appear to pinpoint where this fails. I'm seeing these calls

export const Book = createMGSOutput(BookModel);

Should that be using the BookSchema instead of the BookModel?

Otherwise I'm afraid I need more of a pinpointed location of where exactly this is failing if I'm gonna try to help.