mongodb - Casbah:没有隐式 View 可用错误

标签 mongodb scala playframework casbah salat

在 Play 应用程序中,使用 Salat 和 Casbah,我试图将 DBObject 反序列化为 Task 类型的对象,但是当调用 .asObject:

No implicit view available from com.mongodb.casbah.Imports.DBObject => com.mongodb.casbah.Imports.MongoDBObject. Error occurred in an application involving default arguments.

对象使用 .asDBObject 正确序列化,并按预期写入数据库。

是什么导致了这种行为,可以采取什么措施来解决它?这是涉及的模型:

package models

import db.{MongoFactory, MongoConnection}

import com.novus.salat._
import com.novus.salat.global._
import com.novus.salat.annotations._
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.commons.Imports._
import play.api.Play


case class Task(label: String, _id: ObjectId=new ObjectId)

object Task {

  implicit val ctx = new Context {
    val name = "Custom_Classloader"
  }

  ctx.registerClassLoader(Play.classloader(Play.current))

  val taskCollection = MongoFactory.database("tasks")

  def create(label: String): Task = {
    val task = new Task(label)
    val dbObject = grater[Task].asDBObject(task)
    taskCollection.save(dbObject)
    grater[Task].asObject(dbObject)
  }

  def all(): List[Task] = {
    val results = taskCollection.find()
    val tasks = for (item <- results) yield grater[Task].asObject(item)
    tasks.toList
  }
}

版本

casbah: "2.8.1"
scala: "2.11.6"
salat: "1.9.9"

最佳答案

创建自定义上下文的说明:

  • First, define a custom context as implicit val ctx = new Context { /* custom behaviour */ } in a package object
  • Stop importing com.novus.salat.global._
  • Import your own custom context everywhere instead.

来源:https://github.com/novus/salat/wiki/CustomContext

关于mongodb - Casbah:没有隐式 View 可用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30440311/

相关文章:

ruby-on-rails - Mongoid 和 has_and_belongs_to_many 关联

java - 如何将 java.util.List[java.lang.Double] 转换为 Scala 的 List[Double]?

scala - 折叠 Action 在 Spark 中是如何工作的?

postgresql - 如何在 Slick 中调用存储过程并获取返回值(使用 Scala)

sql - 即使解析器被标记为可选, Play Scala Anorm 解析器也会抛出 UnexpectedNullableFound

scala - 后台作业服务,如何确保每个集群的作业只定期运行一次

scala - Play 2.0 集成 TDD/BDD 数据库模型生成

MongoDB ReplicaSet - 当只剩下 PRIMARY 时,PRIMARY 角色降为 SECONDARY

java - 在 Java 中列出 mongoDB 的数据库时对 forEach 的引用不明确

java - Spring-Data 没有总结季度业绩