繁体   English   中英

播放2-合并两个JsResult对象

[英]Play2 - Merging two JsResult objects

我想知道是否可以合并JsResult对象,类似于play 2.1+中的〜>运算符。 在下面的代码中,我想验证两个输入,然后相应地更新用户信息。

以下两个验证方法调用之间的运算符无效。 在以下情况下,有没有办法将两个JsResult对象组合在一起?

def update(uid:String) =  Action { request=>
  ( JsString(uid).validate[BSONObjectID] **and** request.body.validate[User]) match {
    case JsSuccess(user,_) =>  Async {
      collection.update(Json.obj("_id"->uid),v).map{
        case someError:LastError if someError.err.isDefined =>  ....
        case noError => ...
      }
    }
    case errors:JsError => Ok(JsError.toFlatJson(errors))
  }   
}

您可以使用平面图来组合JsResults。

这是将两个JsResult合并为一个的方法:

import play.api.libs.json._
import play.api.libs.functional.syntax._

def update(uid:String) =  Action { request =>
  (JsString(uid).validate[BSONObjectID] and request.body.validate[User]).tupled 
    match {
      case JsSuccess((uid,user),_) =>  Async {

tupled andplay.api.libs.functional软件包的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM