2012-10-15 13 views
8

मैं प्ले फ्रेमवर्क और mongoDB का उपयोग कर एक स्कैला एप्लिकेशन बना रहा हूं। मैं Leon Play-Salat का उपयोग कर कनेक्शन स्थापित करता हूं। मैं एक मॉडलप्ले फ्रेमवर्क लियोन सलात मॉडल फॉर्म मैपिंग

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

मेरी नियंत्रक में मैं एक रूप

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)) 

मैं कैसे फार्म के लिए ObjectID मैप करते के लिए यह मैप करने की आवश्यकता है? मुझे ऑब्जेक्ट आईडी के लिए त्रुटि ऑब्जेक्ट नहीं मिल रहा है।

+0

सबसे पहले है। अन्यथा क्षेत्र को मोंगो के डिफ़ॉल्ट आईडी फ़ील्ड में मैप नहीं किया जाएगा। मुझे लगता है कि अगर आप त्रुटि के स्टैक ट्रेस चिपकाते हैं तो इससे मदद मिलेगी, क्योंकि त्रुटि होने पर यह स्पष्ट नहीं है। – Rajish

+0

दूसरी ओर 'id' फ़ील्ड को किसी रूप में प्रकट करने के लिए बहुत उपयोगी नहीं है जब तक कि यह' ऑब्जेक्ट आईडी 'से अधिक मानव पढ़ने योग्य नहीं है। – Rajish

+0

मुझे पढ़ने और संपादित करने के लिए आईडी की आवश्यकता है। नए रूप में आईडी को मोंगोडब द्वारा स्वचालित रूप से जेनरेट किया जाना चाहिए। – William

उत्तर

3

मैं एक CRUD समारोह करने के लिए कोशिश कर रहा हूँ यह हो

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)) 

काम करने के लिए प्रबंधित इस प्रकार आईडी की जरूरत है।

2

खुद निर्माता और Deconstructor का उपयोग कर पाया बेहतर सब कुछ अपने साथ `@Key (" _ आईडी ")` `id` क्षेत्र व्याख्या करने के लिए है की

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)))  ) 
संबंधित मुद्दे