python graphql 将 uuid 转换为 slug
python graphql translate uuid to slug
我正在为一个应用程序使用 python、石墨烯和 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 的转换会在哪里发生。我是否必须在每个 return 子弹的模型上定义一个 @property
?或者这会发生在 graphql 解析器函数中吗?如果是,那将如何实现?
感谢大家的帮助,谢谢!
这完全取决于您,没有任何特别的优缺点。我想如果您打算在您的应用程序的其他地方使用 slug 属性 ,那么将它放在您的模型上是有意义的。如果它只是要在您的 GraphQL 中使用 api 然后将其保留在解析器中。
要在石墨烯中实现它,您可以这样做:
class User(graphene.ObjectType):
id = graphene.ID(required=True)
def resolve_id(user, info):
return uuid_to_slug(user.uuid)
我正在为一个应用程序使用 python、石墨烯和 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 的转换会在哪里发生。我是否必须在每个 return 子弹的模型上定义一个 @property
?或者这会发生在 graphql 解析器函数中吗?如果是,那将如何实现?
感谢大家的帮助,谢谢!
这完全取决于您,没有任何特别的优缺点。我想如果您打算在您的应用程序的其他地方使用 slug 属性 ,那么将它放在您的模型上是有意义的。如果它只是要在您的 GraphQL 中使用 api 然后将其保留在解析器中。
要在石墨烯中实现它,您可以这样做:
class User(graphene.ObjectType):
id = graphene.ID(required=True)
def resolve_id(user, info):
return uuid_to_slug(user.uuid)