سؤال

I am trying to write function that writes data to MongoDB using Casbah toolkit:

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

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

Casbah defines WriteConcern as a Scala object. I get the following errors:

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.   

Also when I try simply instantiate WriteConcern:

    val wc:WriteConcern = WriteConcern

I get this error:

    not found: type WriteConcern

I have import com.mongodb.casbah.WriteConcern in first lines of my code, why it is not found? How can I instantiate WriteConcen? Thanks!

هل كانت مفيدة؟

المحلول

Add an import for the necessary implicit and insert like this:

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

On your question about not being able to instantiate WriteConcern, it's because there's a class under com.mongodb and there's an enum-like object under com.mongodb.casbah. This will work:

import com.mongodb.casbah.WriteConcern
val wc: com.mongodb.WriteConcern = WriteConcern.Normal
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top