python graphql将uuid转换为slug

时间:2018-04-25 20:10:58

标签: python sqlalchemy graphene-python

我正在使用python,graphene和sqlalchemy作为应用程序。我的所有模型都有id字段和uuid字段,生成方式如此

id = db.Column(
    db.Integer,
    primary_key=True,
    unique=True,
    nullable=False)

uuid = db.Column(
    UUID,
    unique=True,
    nullable=false,
    default=uuid.uuid4)

出于安全考虑,将使用uuid字段代替ID,但uuid的问题是它们太长,所以要缩短它们,我使用this method

现在,我不完全确定从uuid到slug的转变会发生在哪里。我是否必须在每个返回slug的模型上定义@property?或者这会发生在graphql解析器函数中,如果是这样,那将如何实现呢?

所有帮助表示感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

这完全取决于你,两者都没有任何特定的利弊。我想如果您打算在应用程序的其他地方使用slug属性,那么将它放在您的模型上是有意义的。如果它只是在你的GraphQL api中使用,那么将它保存在解析器中。

要在Graphene中实现它,你可以这样做:

class User(graphene.ObjectType):
    id = graphene.ID(required=True)

    def resolve_id(user, info):
        return uuid_to_slug(user.uuid)