ich Code schreibe basierend auf „Asynchronous Iteratoren für großen Datensätze“ beschrieben bei https://github.com/websudos/phantom#partial-select-queriesWert Scheibe ist kein Mitglied von play.api.libs.iteratee.Enumerator
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
import org.joda.time.format.DateTimeFormatter
import com.anomaly42.aml.dao.CassandraConnector
import com.websudos.phantom.CassandraTable
import com.websudos.phantom.Implicits._
object People extends People {
def getPersonByUpdatedAt(from:String, to:String, start: Int, limit: Int) = {
val dtf:DateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
val fromDateTime = dtf.parseDateTime(from)
val toDateTime = dtf.parseDateTime(to)
People.select(_.updated_at, _.firstName).allowFiltering.where(_.updated_at gte fromDateTime).and(_.updated_at lte toDateTime).fetchEnumerator().slice(start, limit).collect
}
}
ich folgenden Bibliothek Abhängigkeit bin mit:
scalaVersion := "2.11.6"
libraryDependencies ++= Seq(
"com.websudos" %% "phantom-dsl" % "1.5.4",
many more...
)
aber ich bekomme folgende Fehler beim Kompilieren vor:
value slice is not a member of play.api.libs.iteratee.Enumerator[(org.joda.time.DateTime, Option[String])]
Was ich tryin bin Es ist eine Abfrage zu schreiben, die die nächste Anzahl von Ergebnissen zurückbringt, beginnend mit "start", jedes Mal, wenn die Methode getPersonByUpdatedAt() aufgerufen wird.
Hallo @flavian helfen, vielen Dank für Ihre Antwort. Meine Datenbank hat Millionen von Datensätzen und deshalb muss ich sie mit Enumerators implementieren. Ich habe die Datumsspalte mit 'CLUSTERING ORDER' definiert, wie von Ihnen erwähnt, aber wenn ich' ALLOW FILTERING' nicht verwende, dann bekomme ich Laufzeitfehler. Es ist mir gelungen, mit dem Kompilierungsfehler mit folgender Anweisung wegzukommen: People.select (_. Updated_at, _.firstName) .allowFiltering.where (_. Updated_at gte fromDateTime) .and (_. Updated_at lte toDateTime) .setFetchSize (pageSize) .fetchEnumerator() run Iteratee.slice (start, pageSize)) –