2012-09-07 2 views
0

두 개의 임베드 된 문서로 구성된 사례 클래스가 있는데 그 중 하나는 목록입니다. 목록에있는 항목을 검색하는 데 문제가 있습니다. 나에게 이해가 나던 value subcategory_id is not a member of List[models.SubCategories] : 나는 오류가Salat 및 Embeded MongoDb Documents

package models 

import play.api.Play.current 
import com.novus.salat._ 
import com.novus.salat.dao._ 
import com.mongodb.casbah.Imports._ 
import se.radley.plugin.salat._ 
import com.novus.salat.global._ 

case class Category(
    _id: ObjectId = new ObjectId, 
    category: Categories, 
    subcategory: List[SubCategories] 
) 

case class Categories(
    category_id: String, 
    category_name: String 
) 

case class SubCategories(
    subcategory_id: String, 
    subcategory_name: String 
) 

object Category extends ModelCompanion[Category, ObjectId] { 
    val collection = mongoCollection("category") 
    val dao = new SalatDAO[Category, ObjectId](collection = collection) {} 
    val CategoryDAO = dao 

    def options: Seq[(String,String)] = { 
    find(MongoDBObject.empty).map(it => (it.category.category_id, it.category.category_name)).toSeq 
    } 

    def suboptions: Seq[(String,String,String)] = { 
    find(MongoDBObject.empty).map(it => (it.category.category_id, it.subcategory.subcategory_id, it.subcategory.subcategory_name)).toSeq 
    } 
} 

:

아래에있는 내 코드를 참조하십시오.

답변

1

당신은이 일을하고 있습니다 : BTW

def suboptions: Seq[(String,String,String)] = { 
    find(MongoDBObject.empty).map(category => { 
    val categories: Categories = category.category 
    val categoryId: String = categories.category._id 
    val subcategory: List[Subcategory] = category.subcategory 
    val subcategoryId: String = subcategory.subcategory_id //here you are trying to 
     //get id from list of subcategories, not one of them 
    val subcategoryName: String = subcategory.subcategory_name //same here 
    (categoryId, subcategoryId, subcategoryName)).toSeq 
    } 
} 

. 스칼라에서 snake_case을 사용하는 것은 매우 드문 일이다, 발은/var 이름은 낙타 표기법에 있어야 this

편집을 참조하십시오 당신은 이렇게 간단 할 수 있습니다 : 당신을 감사 할 수있을 때 나는이 시도

case class Category(
    _id: ObjectId = new ObjectId(), 
    id: String, 
    name: String, 
    subcategories: List[Subcategory] 
) 
case class Subcategory(
    id: String, 
    name: String 
) 
//not tested 
def suboptions: Seq[(String, String, String)] = { 
    val categories = find(MongoDBObject.empty) 
    for{ 
    category <- categories; 
    subcategory <- category.subcategories 
    } yield (category.id, subcategory.id, subcategory.name) 
} 
+0

합니다. – DrWolfe