Scala,Casbah:编译错误。如何从外部库实例化对象?

时间:2013-03-29 19:42:42

标签: scala casbah objectinstantiation

我正在尝试编写使用Casbah工具包将数据写入MongoDB的函数:

  import com.mongodb.casbah.WriteConcern
      import ...

  def saveRecord(rec: MongoDBObject) {
    mongoColl.insert(rec, WriteConcern)
  }

Casbah将WriteConcern定义为Scala对象。我收到以下错误:

No implicit view available from Object => com.mongodb.casbah.Imports.DBObject.  

not enough arguments for method insert: (implicit dbObjView: Object => com.mongodb.casbah.Imports.DBObject, implicit concern: com.mongodb.WriteConcern, implicit encoder: com.mongodb.casbah.Imports.DBEncoder)com.mongodb.casbah.Imports.WriteResult. Unspecified value parameter dbObjView.   

当我尝试简单地实例化WriteConcern时:

    val wc:WriteConcern = WriteConcern

我收到此错误:

    not found: type WriteConcern

我的代码的第一行有import com.mongodb.casbah.WriteConcern,为什么找不到它?如何实例化WriteConcen? 谢谢!

1 个答案:

答案 0 :(得分:2)

为必要的implicit添加导入并插入如下:

import com.mongodb.casbah.Imports._
mongoColl.insert(rec)

关于无法实例化WriteConcern的问题,这是因为com.mongodb下有一个类,com.mongodb.casbah下有一个类似枚举的对象。这将有效:

import com.mongodb.casbah.WriteConcern
val wc: com.mongodb.WriteConcern = WriteConcern.Normal