为 prisma 自动生成增量字段
Auto generated Incrementing field for prisma
我在 datamodel.prisma
文件中创建了一个名为 Order
的实体。它应该在那里自动生成名为 orderRef
的字段。对于每个突变调用,它应该为 Order 实体的 createOrder
字段自动生成增量值。
对于第一个订单,'orderRef' 字段的值应为 OD1,第二个订单的字段 'orderRef' 的值应为 OD2,依此类推。
例如:
(OD1, OD2, ....... OD124, ..... )
实现此目的最简单的方法是什么?
是 该值应该是字符串,而不是数字。
目前,您无法在 Prisma 中自动生成增量字段。但是,an RFC 关于 Field Behavior 将来会允许这种功能。
目前有3种选择:
1/ 创建节点时,查询获取相同类型的最后一个节点,并递增最后一个值。
query {
things(orderBy: createdAt_desc, first: 1) {
myId
}
}
...
newId = myId + 1
...
mutation {
createThing(data: {myId: newId, ... }) {
...
}
}
2/ 创建节点时,进行聚合查询,获取所有同类节点的计数,并根据计数递增。(但是,如果您删除以前的节点,您可能会发现自己多次拥有相同的值。)
query {
thingsConnection {
aggregate {
count
}
}
}
...
newId = count + 1
...
mutation {
createThing(data: {myId: newId, ... }) {
...
}
}
3/ 如果您需要的是用户可读的 ID,请考虑创建一个随机的 6 个字符长的字符串或 using a library.(这将删除需要额外的查询,但随机性可能会产生令人惊讶的行为)
我在 datamodel.prisma
文件中创建了一个名为 Order
的实体。它应该在那里自动生成名为 orderRef
的字段。对于每个突变调用,它应该为 Order 实体的 createOrder
字段自动生成增量值。
对于第一个订单,'orderRef' 字段的值应为 OD1,第二个订单的字段 'orderRef' 的值应为 OD2,依此类推。 例如:
(OD1, OD2, ....... OD124, ..... )
实现此目的最简单的方法是什么? 是 该值应该是字符串,而不是数字。
目前,您无法在 Prisma 中自动生成增量字段。但是,an RFC 关于 Field Behavior 将来会允许这种功能。
目前有3种选择:
1/ 创建节点时,查询获取相同类型的最后一个节点,并递增最后一个值。
query {
things(orderBy: createdAt_desc, first: 1) {
myId
}
}
...
newId = myId + 1
...
mutation {
createThing(data: {myId: newId, ... }) {
...
}
}
2/ 创建节点时,进行聚合查询,获取所有同类节点的计数,并根据计数递增。(但是,如果您删除以前的节点,您可能会发现自己多次拥有相同的值。)
query {
thingsConnection {
aggregate {
count
}
}
}
...
newId = count + 1
...
mutation {
createThing(data: {myId: newId, ... }) {
...
}
}
3/ 如果您需要的是用户可读的 ID,请考虑创建一个随机的 6 个字符长的字符串或 using a library.(这将删除需要额外的查询,但随机性可能会产生令人惊讶的行为)