首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >玩转链期货

玩转链期货
EN

Stack Overflow用户
提问于 2016-01-25 12:28:52
回答 1查看 90关注 0票数 0

我正在为scala框架开发一些小的网页,我使用mongodb

会员单据有meberinfo包含会员id,考勤单据有

某人的出勤信息。

所以,我想先找到某个群中的成员,然后

查找成员的出勤信息..

我的代码如下所示...

代码语言:javascript
运行
复制
def attendanceBySubGroup(group: String, sub_group: String) = Action.async{

    var  obj : JsObject = Json.obj("group" -> group)
    if(sub_group ne "All"){
      obj = obj + ("sub_group" -> JsString(sub_group))
    }

    val cursor: Cursor[JsObject] = member_list.find(obj).cursor[JsObject]

    // gather all the JsObjects in a list
    val futureMemberList: Future[List[JsObject]] = cursor.collect[List]()




    val futurePersonsJsonArray: Future[JsArray] = futureMemberList.map {
      val m = ArrayBuffer.empty[JsObject]
      members => members.map{
        member => {
          val futureItem = attendance_list.find(Json.obj("member_id" -> member.\("_id").\("$oid"))).one[JsObject]
          futureItem.map {
            case Some(item) => member.+(("attendance" , item.\("attendance")))
            case None => member.++(Json.obj("attendance"-> false))
          }
        }
      }
      Json.arr(m.toList)
    }



    futurePersonsJsonArray.map {
      members =>
        Ok(members(0))
    }

但是,我想要的不是工作

也许,futureItem.map { ..是异步呼叫..。

如何返回包含出勤信息的成员列表..

谢谢你的帮忙

EN

回答 1

Stack Overflow用户

发布于 2016-01-28 19:45:13

我不确定,这是最好的解决方案...

但是它工作正常..

任何人找到更好的solution..please发布你的答案

代码语言:javascript
运行
复制
  def attendanceBySubGroup(group: String, sub_group: String) = Action.async{

    var  obj : JsObject = Json.obj("group" -> group)
    if(sub_group ne "All"){
      obj = obj + ("sub_group" -> JsString(sub_group))
    }

    val cursor: Cursor[JsObject] = member_list.find(obj).cursor[JsObject]

    // gather all the JsObjects in a list
    val futureMemberList: Future[List[JsObject]] = cursor.collect[List]()

    val futureMemberListWithAttendance = futureMemberList.map {
      members =>  members.map{
        member => {
           val futureItem = attendance_list.find(Json.obj("member_id" -> member.\("_id").\("$oid"))).one[JsObject]
           futureItem.map[JsObject] {
            case Some(item) => member.+(("attendance" , item.\("attendance")))
            case None => member.++(Json.obj("attendance"-> false))
          }
        }
      }
    }

    futureMemberListWithAttendance.map{
     val memberAttendances = ArrayBuffer.empty[JsObject]
     aa => Await.result(Future.reduce(aa)((s1, s2) => {memberAttendances+=s1; s1 } ) , Duration.Inf)
     Ok(Json.arr(memberAttendances))
   }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34985104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档