我正在使用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解析器函数中,如果是这样,那将如何实现呢?
所有帮助表示感谢,谢谢!
答案 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)