mongodb 模型字段在查询字符串和 GraphQL 查询中不可用
Posted
技术标签:
【中文标题】mongodb 模型字段在查询字符串和 GraphQL 查询中不可用【英文标题】:mongo model fields not available in query string and GraphiQL query 【发布时间】:2019-10-30 11:12:31 【问题描述】:我正在创建一个项目来查询 GraphQL 中的 mongo 模式。 我有一个模型,它充当 mongo 集合和模式文件,用于使用 graphql Query 映射模型。 当我尝试查询 mongo 模型中的字段时,只有 id 被填充并且无法检索其他字段。
下面的代码sn-p:
models.py
class A(EmbeddedDocument):
content_length = StringField(name="content-length", required=True)
expires = StringField()
destination = StringField()
subscription = StringField()
priority = StringField()
class B(DynamicEmbeddedDocument):
pass
class Store(Document):
meta = 'collection': 'event_store'
one = EmbeddedDocumentField(A, required=True)
two = EmbeddedDocumentField(B, required=True)
schema.py
class StoreType(MongoengineObjectType):
class Meta:
model = Store
interfaces = (Node,)
class Query(graphene.ObjectType):
node = Node.Field()
all_stores = MongoengineConnectionField(StoreType)
store = graphene.Field(StoreType)
def resolve_all_stores(parent, info, **kwargs):
return list(EventStoreModel.objects.all())
schema = graphene.Schema(query=Query, types=[StoreType,])
GraphIQL 中的查询: 当前结果:
query
allEvents
edges
node
id
result
"data":
"allEvents":
"edges": [
"node":
"id": "RXZlbnQ6NWQwNjFiZTBiMjNjYTAwYTdmMDk5YTgy"
]
预期结果:
query
allEvents
edges
node
id,
one,
two
"data":
"allEvents":
"edges": [
"node":
"id": "RXZlbnQ6NWQwNjFiZTBiMjNjYTAwYTdmMDk5YTgy",
"one":[data],
"two":[data]
]
在查询时,我需要来自 Store 模型(一、二)的字段。 提前致谢
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:class AField(MongoengineObjectType):
class Meta:
model = B
interfaces = (Node,)
class BField(MongoengineObjectType):
class Meta:
model = A
interfaces = (Node,)
【讨论】:
虽然这段代码可能会解决问题,但一个好的答案还应该解释它的作用以及它如何提供帮助?以上是关于mongodb 模型字段在查询字符串和 GraphQL 查询中不可用的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 查询聚合 localField ObjectId 字符串和外部字段 ObjectId