मैं निम्नलिखित Emberjs डाटा मॉडल है:Emberjs डाटा कैसे hasMany-डाटा लोड करने के लिए बाद में
App.File = DS.Model.extend({
like: DS.attr('boolean'),
comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
file: DS.belongsTo('App.File'),
comment: DS.attr('string')
});
और साथ प्रीलोड:
App.store.load(App.File, {id: 1, like: false});
अब मैंने सोचा, अगर मैं इस तरह की टिप्पणियां मिल :
var f = App.store.find(App.File, 1);
var c = f.get("comments");
var c एक खाली एम्बरएरे है और अनुरोध सर्वर को भेजा जाता है। लेकिन मुझे कोई अनुरोध नहीं मिला? मुझे और क्यों करना है? मैं वास्तव में टिप्पणियों को preload करना नहीं चाहता।
इसके अलावा अधिक, अगर मैं एक टिप्पणी जोड़ने, लेकिन यह भी एक साथ फ़ाइल बदलने के लिए:
f.get("comments").createRecord({comment: "test"});
f.set("like", true);
App.store.commit();
दो अनुरोधों के सर्वर पर भेज रहे हैं। लेकिन अगर मैं निम्नलिखित JSON (फ़ाइल के लिए) लौटाता हूं:
{ "id": 1, like: true }
मेरी पहली दृश्य टिप्पणी फिर से गायब हो जाती है। क्यूं कर? और मुझे क्या करना है?
आपकी मदद के लिए धन्यवाद!
तेज़ उत्तर के लिए धन्यवाद। ठीक। क्या कोई दूसरा रास्ता नहीं है? इस तरह से डेटा के लिए अधिक एसक्यूएल-क्वेरी की ओर जाता है, जो ज्यादातर मामलों में मुझे इसकी आवश्यकता नहीं होती है। और यह दूसरी समस्या के लिए मदद नहीं करेगा, क्योंकि सर्वर के लिए पहला अनुरोध अद्यतन फ़ाइल के लिए अनुरोध है। और दूसरा अनुरोध एड-टिप्पणी अनुरोध है। शायद यह काम करेगा, अगर मैं createRecord के बाद एक दूसरा प्रतिबद्ध-आदेश जोड़ता हूं। –
मैं findQuery के साथ इस्तेमाल की गई मैकेनिज्म को प्रीफेर कर दूंगा। पहली बार जब आप टिप्पणी विशेषता का उपयोग करते हैं, तो एक findQuery सर्वर पर पास किया जाएगा। –
मैं एक समान मुद्दे में भाग गया। यह अच्छा होगा अगर किसी खोज के लिए आईडी की आवश्यकता के बजाय कई कॉल, वे विदेशी कुंजी का उपयोग करके findQuery के माध्यम से लाने का समर्थन करेंगे। मैंने अपने मॉडल में "getComments" विधि जोड़ने का निर्णय लिया जो findQuery चलाता है। – jhorman