文档
参考
功能
动态查询

动态查询

对于更复杂的查询,您可以使用导出的接口构建类型安全的查询。

示例使用以下 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
  // ...
}