Nexus-prisma:订购嵌套连接
Nexus-prisma: order nested connections
保持架构中嵌套对象顺序的最佳方法是什么。
我的架构:
type Article {
id: ID! @id
pages: [Page!]!
}
type Page {
id: ID! @id
}
这就是我尝试对页面进行排序的方式(未成功):
updateArticle({
variables: {
aricle.id,
data: {
pages: {
connect: reorderPages(aricle.pages)
}
}
}
解析器:
t.field("updateArticle", {
type: "Article",
args: {
id: idArg(),
data: t.prismaType.updateArticle.args.data
},
resolve: (_, { id, data }) => {
return ctx.prisma.updateArticle({
where: { id },
data
});
}
});
我明白为什么这种做法是错误的。我猜订单应该通过连接 table 中的订单索引写入数据库。我不知道如何处理 GraphQL/Nexus/Prisma/MySQL。
对于 N:M 关系,架构将如下所示:
type Article {
id: ID! @id
title: String!
items: [ArticleItemEdge!]!
}
type ArticleItemEdge {
id: ID! @id
article: Article! @relation(link: INLINE)
item: Item! @relation(link: INLINE)
order: Int!
}
type Item {
id: ID! @id
title: String!
articles: [ArticleItemEdge!]!
}
然后以更 "Relay" 的方式查询带有边和节点的文章
query {
articles {
items(orderBy: order_ASC) {
item {
title
}
}
}
}
如果不需要 N:M,您可以像这样更新架构定义:
type Article {
id: ID! @id
items: [Item!]!
}
type Item {
id: ID! @id
article: Article! @relation(link: INLINE)
order: Int!
}
^ 这会将数据库表变成 1:N 关系而不是 n:m
然后你可以像这样发出查询:
query {
articles {
id
items(orderBy: order_ASC) {
id
}
}
}
更新 "order" 的值应该很简单,所以我将在这里省略它。
希望它能回答您的问题!
保持架构中嵌套对象顺序的最佳方法是什么。
我的架构:
type Article {
id: ID! @id
pages: [Page!]!
}
type Page {
id: ID! @id
}
这就是我尝试对页面进行排序的方式(未成功):
updateArticle({
variables: {
aricle.id,
data: {
pages: {
connect: reorderPages(aricle.pages)
}
}
}
解析器:
t.field("updateArticle", {
type: "Article",
args: {
id: idArg(),
data: t.prismaType.updateArticle.args.data
},
resolve: (_, { id, data }) => {
return ctx.prisma.updateArticle({
where: { id },
data
});
}
});
我明白为什么这种做法是错误的。我猜订单应该通过连接 table 中的订单索引写入数据库。我不知道如何处理 GraphQL/Nexus/Prisma/MySQL。
对于 N:M 关系,架构将如下所示:
type Article {
id: ID! @id
title: String!
items: [ArticleItemEdge!]!
}
type ArticleItemEdge {
id: ID! @id
article: Article! @relation(link: INLINE)
item: Item! @relation(link: INLINE)
order: Int!
}
type Item {
id: ID! @id
title: String!
articles: [ArticleItemEdge!]!
}
然后以更 "Relay" 的方式查询带有边和节点的文章
query {
articles {
items(orderBy: order_ASC) {
item {
title
}
}
}
}
如果不需要 N:M,您可以像这样更新架构定义:
type Article {
id: ID! @id
items: [Item!]!
}
type Item {
id: ID! @id
article: Article! @relation(link: INLINE)
order: Int!
}
^ 这会将数据库表变成 1:N 关系而不是 n:m
然后你可以像这样发出查询:
query {
articles {
id
items(orderBy: order_ASC) {
id
}
}
}
更新 "order" 的值应该很简单,所以我将在这里省略它。
希望它能回答您的问题!