Scala, Casbah: ошибки компиляции. Как выделить объект из внешней библиотеки?
Я пытаюсь написать функцию, которая записывает данные в MongoDB с помощью инструментария Casbah:
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 ответ
Решение
Добавьте импорт для необходимого implicit
и вставьте так:
import com.mongodb.casbah.Imports._
mongoColl.insert(rec)
На ваш вопрос о невозможности создания экземпляра WriteConcern
это потому, что есть класс под com.mongodb
и есть enum-подобный объект под com.mongodb.casbah
, Это будет работать:
import com.mongodb.casbah.WriteConcern
val wc: com.mongodb.WriteConcern = WriteConcern.Normal