在石墨烯/蒙哥币中实现count(*)

时间:2020-06-19 12:11:43

标签: mongodb flask mongoengine graphene-python

下午好,

我如何实现对MongoDB请求的后项计数并通过GraphQl请求使其可用?我目前正在使用MongoDB <=> MongoEngine <=>石墨烯<=> Flask。

任何帮助都将受到欢迎。

谢谢

B。

1 个答案:

答案 0 :(得分:0)

经过很多时间,阅读论坛和Internet页面之后,我现在能够检索从MongoDB发送回的实体总数。

这是Models.py

from mongoengine import Document
from mongoengine.fields import StringField
class User(Document):
    meta = {'collection': 'user'}
    first_name = StringField(required=True)
    last_name = StringField(required=True)

这是Schema.py

from graphene_mongo import MongoengineObjectType,MongoengineConnectionField
import graphene
from graphene.relay import Node
from Models import User as UserModel
from mongoengine import connect
from flask import Flask
from flask_graphql import GraphQLView

connect(db="graphene-mongo-example",host="127.0.0.1:27017",alias="default")


class Connection(graphene.Connection):
    class Meta:
        abstract = True

    total_count = graphene.Int()

    def resolve_total_count(self, info):
        return len(self.edges)

class User(MongoengineObjectType):
    class Meta:
        model = UserModel
        interfaces=(Node,)
        filter_fields = {'first_name': {'startswith', 'contains'}, 'last_name': [""]}
        connection_class = Connection

class Query(graphene.ObjectType):

    Node=Node.Field()
    all_users = MongoengineConnectionField(User)


schema = graphene.Schema(query=Query)

app = Flask(__name__)
app.debug = True
app.add_url_rule(
    "/graphql", view_func=GraphQLView.as_view("graphql", schema=schema, graphiql=True,types=[User])
  )

if __name__ == "__main__":
    app.run()

要运行此示例:

python Schema.py