지도 축소 기능을 사용하여 MOngoDB의 결과를 가져 오는 Lift 및 Scala를 사용하여 Rest 웹 서비스를 만들려고합니다. 예를 들어 이것은 내 서비스 기능입니다.
val map ="""function map(){
filteredDur= [];
this."""+sendername+""".forEach(function (s){
if (s.start > new ISODate(""""+ timestamp +""":00.00+02:00")){
filteredDur.push(s);
}
});
filteredDur.sort(function(a,b) {
return a.start-b.start
})
emit(this._id, {After: filteredDur});
}"""
val reduce = "function(key, values) { return values[0]; }"
val mr = MapReduceCommand(mongoColl.getName(), map, reduce, MapReduceInlineOutput, None, None, None, None)
val result = mongoColl.mapReduce(mr)
var temp = result.toString()
//here some transformations of map_reduce result like getting read of map_reduce //comments
return JString(temp);
serve { //this are Lift's RestHelper methods
case Req("sendungen" :: "sendungen" ::Nil, suffix, GetRequest) => getAllSendungen()
}
나는 리프트에 RestHelper를 사용하고 있습니다. . 문제는 결과 내가 유효한 JSON을하지 않는 :(나는 모든 따옴표는 백 슬래쉬 얻을 수 있습니다 :
{ \"desc\" : \"\" , \"duration\" : 30 , \"start\" : { \"$date\" : \"2010-07-13T09:30:00Z\"} , \"end\" : { \"$date\" : \"2010-07-13T10:00:00Z\"}
이 구문 분석하지 않습니다 내 클라이언트 파서 그래서 나는 원한다.
{ "desc" : "" , "duration" : 30 , "start" : { "$date" : "2010-07-13T09:30:00Z"}
어떻게 ? 난 내가 클라이언트 응용 프로그램에서 슬래시를 대체 할 수있어이 작업을 할 수 있습니다,하지만 난이 매우 우아 생각하지 않습니다 나는 경우 클래스를 사용했지만, 같은 가지고 여기 경우 클래스입니다 :..
case class Sendung(duration:Int, subtitle:String, desc:String, image:String, sender:String,end:java.util.Date, title:String, start:java.util.Date) {
def toJSON (e : Sendung) : JObject = {
import net.liftweb.json.JsonDSL._
import net.liftweb.json.JsonAST._
("key" ->
("duration" -> JInt(duration))) ~
("subtitle" -> subtitle) ~
("desc" -> desc));
}
}
코드를 포맷하는 것은 어떻습니까? –
죄송합니다.이 눈금의 여러 따옴표는 모든 것을 엉망으로 만들고 있습니다. ( – Nigul