需要检查数据库的 Play Framework Json 验证

Play Framework Json validation that needs to check database

我需要检查现有实体的发布字段是否唯一。我想使用验证器。我正在尝试这样做:

  val slugUnique: Reads[String] =
    Reads.StringReads.filter(ValidationError("not_unique"))(str =>
      Entity.find(str).isEmpty
    )

但我需要将当前实体的 id 传递给此方法以仅检查其他记录而不是当前记录。这可能吗?或者应该以其他方式完成?

你应该使用 def 使 slugUniqe 成为一个函数,然后它可以有一个参数。所以

def slugUnique(id: Long): Reads[String] =
    Reads.StringReads.filter(ValidationError("not_unique"))(str =>
      Entity.find(str).isEmpty
    )

然后要从控制器调用它,您需要显式传递读取函数,类似这样

request.body.validate[String](slugUnique(id))