graphql-python / graphene-mongo

Graphene MongoEngine integration
http://graphene-mongo.readthedocs.io/en/latest/
MIT License
288 stars 113 forks source link

Problem with EmbeddedFiled (Can't query via graphql #152

Open david2003542 opened 4 years ago

david2003542 commented 4 years ago

Hi Guys, Currently I set up a simple model, schema, type as below. However, I don't know why when I use EmbeddedField it works in the runtime (It doesn't show any runtime error) but I can't operate any query on this field.

Error messge "Cannot query field \"metadata\" on type \"Scenario\"

Environment: Python3.6 Python3.8

Computer system Mac: MacOC

Models.py

# EmbeddedDocument Models
class Scenario(EmbeddedDocument):
    name = models.StringField(max_length=100)
    creationDatetime = models.DateTimeField()
    lastUpdateDatetime = models.DateTimeField()
    data = models.DictField()
    cancellation = models.BooleanField(default=False)
    isDefault = models.BooleanField(default=False)

# Document Models
class View(Document):
    name = models.StringField(max_length=100)
    scenarios = models.EmbeddedDocumentListField(Scenario)
    cancellation = models.BooleanField(default=False)

Types.py

class ViewType(MongoengineObjectType):
    class Meta:
        model = View
        interfaces = (relay.Node,)

Schema.py

class Query(graphene.ObjectType):
    node = Node.Field()    
    view = MongoengineConnectionField(ViewType)
    views = graphene.List(ViewType)

    def resolve_views(self, info, name):
        return View.objects.get(name=name)

Also, I have tried the solution on this issue as well https://github.com/graphql-python/graphene-mongo/issues/32

I will get an error when I declare the reference model

abawchen commented 4 years ago

@david2003542 Have you tried to declare ScenarioType as follows before ViewType?

class ScenarioType(MongoengineObjectType):
    class Meta:
        model = Senario
        interfaces = (relay.Node,)