我是Salat,Casbah和MongoDB的新成员。当我试图做一个简单的方法让所有的用户都从db,
import DAL.Instances.User.{UserDAO, User}
import com.novus.salat._
import com.novus.salat.global._
import com.novus.salat.annotations._
import com.novus.salat.dao._
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.MongoConnection
object UserRepository {
def getAllUsers() = {
val userList= UserDAO.find()
userList.isEmpty match {
case true => throw new Exception("None users in your db")
case false => userList
}
}我面临两个错误:
Error:(29, 31) No implicit view available from Unit => com
.mongodb.DBObject.
val userList= UserDAO.find()
^
Error:(29, 31) not enough arguments for method find: (implicit evidence$2: Unit => com.mongodb.DBObject)com.novus.salat.dao.SalatMongoCursor[DAL.Instances.User.User].
Unspecified value parameter evidence$2.
val userList= UserDAO.find()
^这是我的用户代码:
object User {
case class User( _id: ObjectId = new ObjectId, name:String, age:Int)
object UserDAO extends SalatDAO[User, ObjectId](collection = MongoConnection()("fulltestdb")("user"))
}发布于 2016-03-07 12:53:12
我不知道您使用的是哪个版本的Salat,但是如果您查看find的签名,它会给您一个提示,说明问题是什么:
def find[A <% DBObject](ref: A): SalatMongoCursor[ObjectType]您需要使用具有find的参数调用视界,以便可以将该参数视为DBObject。这意味着从A => DBObject进行的隐式转换应该在范围内。
在您的情况下,您没有传递任何参数。这将被视为Unit,因此编译器试图从Unit => DBObject查找隐式转换。这是找不到的,所以编译失败。
要解决这个问题,最好的办法是传入一个空的DBObject,您可以使用来自卡西巴的MongoDBObject.empty来实现这一点。您可以添加来自Unit => MongoDBObject的隐式转换,但我可能倾向于在可能的情况下使其显式化。
https://stackoverflow.com/questions/35640599
复制相似问题