动态查询
对于更复杂的查询,您可以使用导出的接口构建类型安全的查询。
示例使用以下 Prisma 模式
model User {
id String @default(cuid()) @id
kind String // can be of type employee or customer
email String
referrer String?
}
参数
参数以以下形状导出
<Model><Action>Param
对于上面的 user 模型,有两个主要的导出接口,分别用于查询数据和写入数据
UserWhereParam
UserSetParam
示例
使用上面的模式和 CreateUser 函数,类型为客户的用户应该保存他们的 IP 地址,但新用户类型为员工的则不应保存。
func CreateUser(w http.ResponseWriter, r *http.Request) {
var params []db.UserSetParam
email := r.PostFormValue("email")
kind := r.PostFormValue("kind")
if kind == "customer" {
// Set the referer for users of type customer only
params = append(params, db.User.Referrer.Set("Referer"))
}
_, err := client.User.CreateOne(
db.User.Kind.Set(kind),
db.User.Email.Set(email),
params...,
).Exec(r.Context())
if err != nil {
panic(err)
}
// write results to response
// ...
}