2012-10-15 18 views
8

Play framework ve mongoDB kullanarak bir scala uygulaması oluşturuyorum. Bağlantıları Leon Play-Salat kullanarak yönetmeyi başardım. Ben bir formaOynat çerçeve Leon Salat Model Form Eşleme

val personForm: Form[Person] = Form(

// Defines a mapping that will handle Contact values 
mapping(
    "id" -> of[ObjectId], 
    "fname" -> nonEmptyText, 
    "mname" -> text, 
    "lname" -> nonEmptyText  
)(Person.apply)(Person.unapply)) 

nasıl forma NesneKimliği harita yok eşlemek gereken bir modele benim denetleyicisi olarak

case class Person(
    id: ObjectId = new ObjectId, 
    fname: String, 
    mname: String, 
    lname: String 
) 

var? Nesneyi alıyorum ObjectId için nesne bulunamadı.

+0

İlk olduğunu. Aksi takdirde alan, mongo'nun varsayılan kimlik alanına eşlenmez. Hatanın yığınının izini yapıştırırsanız, hata oluştuğunda açık olmadığı için yardımcı olacağını düşünüyorum. – Rajish

+0

Diğer taraftan, "ObjectID" den daha okunabilir bir tür olmadıkça bir formdaki "id" alanını ortaya çıkarmak çok kullanışlı değildir. – Rajish

+0

Okuma ve düzenleme işlevi için ID'ye ihtiyacım var. Yeni formda ID, Mongodb tarafından otomatik olarak oluşturulmalıdır. – William

cevap

3

böylece kimliğine gereksinimi Bir CRUD işlevi yapmaya çalışıyorum o

val personForm: Form[Person] = Form(
// Defines a mapping that will handle Contact values 
mapping(
    "id" -> ignored(new ObjectId), 
    "fname" -> nonEmptyText, 
    "mname" -> text, 
    "lname" -> nonEmptyText  
)(Person.apply)(Person.unapply)) 

çalışma almak için yönetin. Kendi yapıcı ve Deconstructor kullanılarak Bulunan

2

Eğer `@Key ("_ id")` ile `id` alanını açıklama gereken daha iyi

val personForm: Form[Person] = Form(
    mapping(
    "fname" -> nonEmptyText, 
    "mname" -> text, 
    "lname" -> nonEmptyText 
)((fname, mname, lname) => Person(new ObjectId, fname, mname, lname)) 
    ((person: Person) => Some((person.fname, person.mname, person.lname)))  ) 
İlgili konular