2014-04-22 14 views
8

DS.Store#pushPayload के बाद रिकॉर्ड (ओं) को वापस करने का कोई बेहतर तरीका है? यह मैं क्या कर रहा हूँ ...स्टोर पुश के बाद रिटर्न रिकॉर्ड रिकॉर्ड

var payload = { id: 1, title: "Example" } 
store.pushPayload('post', payload); 
return store.getById('post', payload.id); 

लेकिन, नियमित DS.Store#push के साथ डाला रिकॉर्ड लौटे प्राप्त है। दोनों के बीच एकमात्र अंतर, जो मैं बता सकता हूं, वह है कि DS.Store#pushPayload सही धारावाहिकों के साथ पेलोड डेटा को क्रमबद्ध करता है।

उत्तर

5

DS.Store#pushPayload आइटमों की सर आइटम लेने में सक्षम है, केवल एक नहीं, और इसमें साइड-लोड डेटा हो सकता है। यह पेलोड में एक पूर्ण पेलोड संसाधित करता है और उम्मीद है जड़ कुंजियाँ:

{ 
    "id": 1, 
    "title": "title", 
    "comments": [1] 
} 
:

{ 
    "posts": [{ 
    "id": 1, 
    "title": "title", 
    "comments": [1] 
    }], 
    "comments": [ 
    //.. and so on ... 
    ] 
} 

DS.Store#push एक भी रिकॉर्ड है जो सामान्यीकृत किया गया है और कोई साइड लोड डेटा होता है (ध्यान दें कि वहाँ कोई रूट कुंजी है) की उम्मीद

इस कारण से, यह रिकॉर्ड वापस करने के लिए push के लिए समझ में आता है, लेकिन pushPayload के लिए कुछ भी वापस करने के लिए।

आप pushPayload उपयोग करते हैं, store.find('post', 1) (या store.getById('post', 1)) की एक दूसरी देखने जाने के लिए, मैं नहीं मानता कि वहाँ एक बेहतर तरीका है तरीका है।

+0

हाँ, यह एम्बर-डेटा कोड के चारों ओर देखते हुए मैंने सोचा था। धन्यवाद! – tonycoco

3

this PRpushPayload अब सभी रिकॉर्ड की एक सरणी लौट सकते हैं के रूप में की दुकान में धकेल दिया, एक बार 'ds-pushpayload-return'feature flag सक्षम किया गया है।

फिलहाल, इस सुविधा आप इसे उपयोग करने के लिए आपके package.json में

"ember-data": "emberjs/data#master", 

(अर्थात कैनरी) का उपयोग करना होगा release-- एक मानक या बीटा में उपलब्ध नहीं है। मुझे यकीन नहीं है कि सुविधा आम तौर पर उपलब्ध होगी।

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