2014-07-01 13 views
8

मेरे एप्लिकेशन बैकएंड में कई संसाधन हैं। प्रत्येक संसाधन के लिए एक मॉडल उजागर किया जाता है।नेस्टेड संसाधनों के साथ एम्बर डेटा का उपयोग कैसे करें

अन्य सभी संसाधनों का प्रवेश बिंदु User मॉडल के माध्यम से है। मेरा मतलब है, User दिया गया है हम BlogPost पा सकते हैं। यह देखते हुए एक BlogPost हम Comments आदि

एंबर शब्दावली में, हम कह सकते हैं पा सकते हैं:

User hasMany BlogPost 
BlogPost hasMany Comment 
Comment belongsTo BlogPost 

बैकएंड तक बाकी एपीआई को उजागर करता है फार्म की:

GET /api/v1/users/1 
GET /api/v1/users/1/blog_posts/1 
GET /api/v1/users/1/blog_posts/1/comments/1 

मैं आंकड़ा कोशिश कर रहा हूँ एक निश्चित User से संबंधित BlogPost से संबंधित Comment लाने के लिए एम्बर डेटा का उपयोग कैसे करें।

मैं क्या देखते हैं, अगर मैं Comment के लिए एक विशिष्ट एंबर मॉडल को परिभाषित से:

App.Comment = DS.Model.extend({ 
    ... 
    blogPost: DS.belongsTo('App.BlogPost') 
}); 

और CommentRoute में मैं निम्नलिखित है:

var CommentRoute = MessageRoute.extend({ 
    model: function(params) { 
     this.store.find('comment') 
    }, 

अनुरोध करने के लिए भेज दिया जाता है:

/api/v1/comments 

मुझे यह भी नहीं पता कि एम्बर दा के लिए कहां से शुरू करना है टा फार्म के यूआरएल का उपयोग करें:

GET /api/v1/users/1/blog_posts/1/comments/1 

मैं कई समान (नीचे लिंक देखें) पूछे जाने वाले प्रश्नों देखा है, लेकिन उनमें से किसी के लिए एक निश्चित जवाब नहीं देखा है। उनमें से अधिकतर लगभग एक वर्ष पुराने होते हैं जब एम्बर-डेटा में शायद ऐसी कार्यक्षमता नहीं होती है (या इसलिए इन धागे में से कुछ में दावा किया जाता है)।

मैं फिर से यह पुष्टि करने के लिए कहता हूं कि एम्बर डेटा में ऐसी कार्यक्षमता है या नहीं।

इसी प्रकार के प्रश्न:

  1. Ember Data nested Models
  2. Canonical way to load nested resources
  3. Deep nested routes

उत्तर

1

यह लिंक के साथ है संभाल करने के लिए सबसे अच्छा तरीका है। यदि आप ऐसा नहीं करना चाहते हैं, तो यह समर्थित है, और इसमें हैक करना मुश्किल है (पाइपलाइन बस आसानी से जानकारी को पास नहीं करती है)। व्यक्तिगत रूप से मैं उस मामले में अपना खुद का एडाप्टर रोल करने की सिफारिश करता हूं (Ember without Ember Data)।

App.Foo = DS.Model.extend({ 
    name: DS.attr('string'), 
    bars : DS.hasMany('bar', {async:true}) 
}); 

App.Bar = DS.Model.extend({ 
    foo: DS.belongsTo('foo'), 
}); 

json:

{ 
    id: 1, 
    name: "bill", 
    links: { 
    bars: '/foo/1/bars' 
    } 
} 

उदाहरण: http://emberjs.jsbin.com/OxIDiVU/971/edit

+0

कैसे 'links' विशेषता है मदद? हम सीधे उस टेम्पलेट में उस मार्ग को समझ सकते हैं। – givanse

+0

मुझे खेद है, मुझे यकीन नहीं है कि मैं समझ रहा हूं कि आप क्या कह रहे हैं।मुझे यकीन नहीं है कि क्या आप आरईएसटी शब्दावली के साथ एम्बर शब्दावली मिश्रण कर रहे हैं या सिर्फ कुछ अलग बात कर रहे हैं। टेम्पलेट को मॉडल के एंडपॉइंट के साथ क्या करना है? – Kingpin2k

+0

हाय @ किंगपिन 2k मुझे एक ही समस्या है। क्या आप हमें एक उदाहरण दे सकते हैं कि आप नेस्टेड संसाधनों के लिए लिंक का उपयोग कैसे करते हैं। दस्तावेज़ीकरण के बारे में कोई विवरण नहीं है। अग्रिम धन्यवाद – hasib32

संबंधित मुद्दे