没有隐式视图可用

Kev*_*ith 4 scala implicit mongodb implicit-conversion casbah

当我试图DBObject通过插入批量加载一个列表时,我得到了no implicit view available.

collection.insert(listObjects) // listObjects is a List[DBObject]

[error]Test.scala:139: No implicit view available from List[com.mongodb.casba
h.Imports.DBObject] => com.mongodb.casbah.Imports.DBObject.
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?我怎么解决?

参考:

def insert [A] (docs: List[A])(implicit arg0: (A) ? DBObject) : WriteResult

Vin*_*ana 5

方法insert将获取任何List,但是要将数据存储在Mongo中,casbah需要将其转换为DBObject.为此,它使用隐式转换,在casbah中可用于各种数据类型.但是,您尝试插入的数据没有在您的范围内实现或可用的转换.解决这个问题要么导入隐式转换器,要么实现一个.

在您的情况下,您可能错过了导入.确保你有:

import com.mongodb.casbah.Imports._
Run Code Online (Sandbox Code Playgroud)

并尝试更换listObjectsMongoDBList(listObjects:_*)

编辑:

要回答您的评论,请尝试使用REPL:

scala> val a = List(1,2,3,4,5,6)
a: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> List(a:_*)
res0: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> List(a)
res1: List[List[Int]] = List(List(1, 2, 3, 4, 5, 6))
Run Code Online (Sandbox Code Playgroud)

:_*将获得的元素,而不是列表,并避免产生的目录列表.