2017-07-03 4 views
0

Ich habescala persistierende seq mit Optionen

case class ProcessSteps(stepsData: Seq[ProcessStepTemplatesModel]) 

Diese seqence leer ProcessStepTemplatesModel

haben könnte

Nun, wenn ich das das Array wie folgt anhalten wollen:

request.body.asJson.foreach(f = _.validate[ProcessSteps] match { 
     case JsSuccess(processSteps, _) => 
     // PROBLEM HIER 
     processSteps.stepsData.foreach(processStep => processTemplateDTO.addProcessStepTemplateToProcessTemplate(processStep, processId).map { 

Ich habe einen Fehler wegen der Nullwerte.

Gibt es eine Möglichkeit, die Nullwerte scip und Persis nur diejenigen, die nicht null sind?

Im a scala Playframework App mit Slick als Datenbank-Mapper

Dank

+1

Wie wäre es ein 'Option mit [Seq [ProcessStepTemplatesModel]]' statt null? Oder verwenden Sie 'Seq.empty [T]' als Standardwert? –

+0

Option [Seq ist nicht möglich, ich will keine Nullwerte bestehen bleiben, möchte ich sie – Felix

+0

Wie wäre es processSteps.stepsData.filter (_! = Null) .foreach (...) überspringen? – thwiegan

Antwort

2

läuft Ich schlage vor, Sie ProcessStepTemplatesModel in Option zu wickeln, um anzuzeigen, könnte null Werte sein: case class ProcessSteps(stepsData: Seq[Option[ProcessStepTemplatesModel]]), dann filter(_.isDefined) Ihre Sequenz zu haben nur existierende (nicht nullbare) Schritte und führen den Rest des Codes sicher aus.

+0

Hallo wir versuchen, so gut dies, aber dann bekam ich einen Fehler hier 'implizite val ProcessStepsFormat: OFormat [ProcessSteps] = Json.format [ProcessSteps]' – Felix

+0

Fehler sind: kein implizites Format für Seq [Option [models.ProcessStepTemplatesModel]] verfügbar . – Felix

+0

Ich habe das Gefühl, dass das implizite Format zum Arbeiten mit diesem Objekt von Ihnen überschrieben und definiert werden sollte. Sieht aus wie guyz in [diesem Thema] (https://github.com/playframework/playframework/issues/5196) diskutieren die relevante Frage, nicht wahr? – solar