sql >> Databasteknik >  >> NoSQL >> MongoDB

Alpakka MongoDB - ange typ i MongoSource

Detta är inte publicerat ännu, men i Alpakkas mastergren, MongoSource.apply tar en typparameter:

object MongoSource {
  def apply[T](query: Observable[T]): Source[T, NotUsed] =
    Source.fromPublisher(ObservableToPublisher(query))
}

Därför, med den kommande 0.18-versionen av Alpakka, kommer du att kunna göra följande:

val source: Source[TodoMongo, NotUsed] = MongoSource[TodoMongo](todoCollection.find())

Observera att source här antar att todoCollection.find() returnerar en Observable[TodoMongo]; justera typerna efter behov.

Under tiden kan du helt enkelt lägga till ovanstående kod manuellt. Till exempel:

package akka.stream.alpakka.mongodb.scaladsl

import akka.NotUsed
import akka.stream.alpakka.mongodb.ObservableToPublisher
import akka.stream.scaladsl.Source
import org.mongodb.scala.Observable

object MyMongoSource {
  def apply[T](query: Observable[T]): Source[T, NotUsed] =
    Source.fromPublisher(ObservableToPublisher(query))
}

Observera att MyMongoSource är definierad att ligga i akka.stream.alpakka.mongodb.scaladsl paket (som MongoSource ), eftersom ObservableToPublisher är en paket-privat klass. Du skulle använda MyMongoSource på samma sätt som du skulle använda MongoSource :

val source: Source[TodoMongo, NotUsed] = MyMongoSource[TodoMongo](todoCollection.find()) 



  1. MongoDB - Argumentet till $size måste vara en Array, men var av typen:EOO / saknas

  2. Bygga denna LEFT() SQL i MongoDB Query?

  3. anpassad redis-klient kompilering misslyckas

  4. Hur konfigurerar man Redis-anslutningar med Rails 4, Puma och Sidekiq?