Ember : 1.13.3
Ember Data : 1.13.5
jQuery : 1.11.3
मैं अपने एम्बरजेएस क्लाइंट से अपने सर्वर पर एम्बर-डेटा का उपयोग करके एक JSON पेलोड भेजने की कोशिश कर रहा हूं। मैं परियोजना को सहेजने पर सर्वर पर संपूर्ण ऑब्जेक्ट ग्राफ़ भेजना चाहता हूं, क्योंकि मैं एकाधिक अनुरोध नहीं भेजना चाहता हूं। मुझे एकाधिक अनुरोध भेजने में कोई फर्क नहीं पड़ता, लेकिन मुझे चिंता है कि क्या होता है यदि अनुरोध में से कोई एक मध्य में विफल रहता है और सर्वर पर डेटा सही नहीं होगा।पेबरोड में एम्बरजेएस एम्बेडेड आइटम JSONAPI
मैं JSONAPI (http://jsonapi.org/format/#document-compound-documents) का उपयोग करना चाहता था क्योंकि यह एम्बर में डिफ़ॉल्ट एडाप्टर बन रहा है। इसके अलावा, कुछ सी # पुस्तकालय हैं जो इस प्रारूप को संभालते हैं, इसलिए मैंने सोचा कि यह काफी सरल होगा। हालांकि, spec पढ़ने के बाद, ऐसा लगता है कि अगर वे एक आईडी नहीं है तो मैं वस्तुओं को एम्बेड नहीं कर सकता। एम्बरजेएस भी जेएसओएन को बच्चे ऑब्जेक्ट्स को संलग्न नहीं करता है, भले ही मैंने DS.attr पर { async: false, embedded: 'always' })
निर्दिष्ट किया हो।
मेरा प्रश्न है: यदि किसी एप्लिकेशन का उपयोग इस तरह से किया जाता है कि क्लाइंट साइड पर ऑब्जेक्ट ग्राफ़ बनाया गया है, तो आप पूरे ऑब्जेक्ट ग्राफ़ को सर्वर पर भेजने के लिए JSONAPI प्रारूप का उपयोग कैसे करते हैं? क्या मुझे JSONAPI मानक को संतुष्ट करने के लिए क्लाइंट पक्ष पर आईडी उत्पन्न करना है? फिर सर्वर पर पहुंचने के बाद बस उन्हें अनदेखा करें ताकि वे ओआरएम द्वारा उत्पन्न आईडी के साथ सहेजे जाए?
import DS from 'ember-data';
export default DS.Model.extend(DS.EmbeddedRecordsMixin, {
name: DS.attr('string'),
labelGroups: DS.hasMany('labelGroup', { async: false, embedded: 'always'})
});
यहाँ पोस्ट है कि मैं एक() को बचाने परियोजना पर करने के बाद मिलता है:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
labels: DS.hasMany('label-model', { async: false, embedded: 'always' })
});
यहाँ मेरी परियोजना मॉडल है:
यहाँ मेरी labelGroup मॉडल है
{
"data":{
"attributes":{"name":"Project"},
"relationships":{
"label-groups":{
"data":[
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null}
]
}
},
"type":"label-projects"
}
}
अद्यतन: मैंने क्लाइंट साइड आईडी उत्पन्न करने के लिए https://www.npmjs.com/package/ember-cli-uuid का उपयोग करने का प्रयास किया। हालांकि आउटपुट प्राप्त करने वाले डेटा में अतिरिक्त ऑब्जेक्ट्स शामिल नहीं होते हैं, केवल उनके आईडी के संदर्भ में। मुझे यहां निर्दिष्ट "शामिल" संपत्ति देखने की उम्मीद है: http://jsonapi.org/format/#document-compound-documents, लेकिन यह वहां नहीं है।
{
"data":{
"id":"7b4544ee-91cd-493d-8b10-52040e68c283",
"attributes":{"name":"Project"},
"relationships":{
"label-groups":{
"data":[
{"type":"label-groups","id":"08115273-e82a-4d46-93ea-232ce071fb78"},
{"type":"label-groups","id":"9ca94fe9-8077-411e-98d2-1694c6fecce4"},
{"type":"label-groups","id":"d629f1e8-7962-404d-8034-38229ab21f77"},
{"type":"label-groups","id":"c6bda655-5489-4760-847b-bf02239bb2c5"},
{"type":"label-groups","id":"f6fef249-2d1d-43f0-ba64-24b7ff8b5637"},
{"type":"label-groups","id":"a7db25bf-52c8-477b-83e4-64e7c76b072e"},
{"type":"label-groups","id":"f3b5fbb3-261a-4b3d-b481-b9352f8ce2d6"}
]
}
},
"type":"label-projects"
}
}
मैंने थोड़ा सा शोध किया, और पाया कि जेएसओएनएपीआई के पास अभी तक पोस्ट या पैच अनुरोधों के लिए "एम्बेडेड" या "शामिल" रिकॉर्ड्स के लिए अंतिम समाधान नहीं है। https://github.com/lytics/ember-data-model-fragments addon उस कार्यक्षमता को प्रदान करने का प्रयास प्रतीत होता है। मैं इसे आज़माउंगा। – Grapho