在使用石墨烯(Graphene)作为后端的React Apollo项目中,GraphQL接口类型上的通用字段通常指的是在多个类型中都会用到的字段,比如id
、createdAt
、updatedAt
等。这些字段在很多实体中都是共通的,因此可以通过一些技巧来减少重复代码并提高可维护性。
GraphQL接口(Interface):
通用字段:
id
、createdAt
、updatedAt
等。类型:
Node
接口:GraphQL规范中定义的一个通用接口,通常包含id
字段。应用场景:
User
、Admin
)都可以实现一个包含id
、createdAt
、updatedAt
的接口。假设我们有一个项目,需要在多个类型中包含id
、createdAt
、updatedAt
字段。我们可以定义一个接口来实现这一点。
import graphene
class Timestamped(graphene.Interface):
id = graphene.ID(required=True)
created_at = graphene.DateTime(required=True)
updated_at = graphene.DateTime(required=True)
class UserType(graphene.ObjectType):
class Meta:
interfaces = (Timestamped,)
name = graphene.String(required=True)
email = graphene.String(required=True)
query GetUser {
user(id: "1") {
id
createdAt
updatedAt
name
email
}
}
问题:如何在多个类型中统一管理通用字段?
解决方法:
createdAt
和updatedAt
字段。from datetime import datetime
class BaseModel:
def save(self):
if not self.id:
self.id = generate_unique_id()
self.created_at = datetime.utcnow()
self.updated_at = datetime.utcnow()
# 保存逻辑...
class User(BaseModel, UserType):
# 其他字段和方法...
通过这种方式,可以有效地管理和复用通用字段,同时确保数据的一致性和完整性。
没有搜到相关的文章