क्या मॉडल सहेजते समय कस्टम त्रुटि को संभालने का कोई उचित तरीका है? उदाहरण देने के लिए, मान लें कि मेरे पास केवल दो गुण "नाम" और "मान" वाला मॉडल है। और जब मैं करता हूँ: इससे बचने के लिएमॉडल को सहेजते समय एम्बर-डेटा में कस्टम सर्वर साइड त्रुटियों को संभालने में
var myModel = this.get('store').createRecord('myModel', {"name": "someName", "value": "someValue"});
myModel.save().then(function() {
//if success
//server responded with {"myModel:{"id":1,"name":"someName","value":"someValue"}"}
},function() {
//if failure
//server responded with {"error":"some custom error message"}
//BUT HOW TO CATCH THIS AND POSSIBLY REMOVE THE MODEL FROM THE STORE
});
एक तरह से जाँच करने के लिए अतिरिक्त ajax कॉल करने के लिए करता है, तो नाम अद्वितीय है और फिर सहेज सकता है। मैं बस सोच रहा हूं कि यहां सबसे अच्छा/सुरुचिपूर्ण दृष्टिकोण क्या है।
धन्यवाद, डी
संपादित करें: मैंने सोचा कि यह ग्रूवी में चीजों के सर्वर साइड पर अधिक संदर्भ प्रदान करने के लिए थोड़ा मदद कर सकता है। तो यहाँ यह है:
मेरी नियंत्रक में मेरे पास है:
def create() {
try {
newRow = someService.create(params)
render someService.list(newRow) as JSON//returns data in format needed by ember-data
}
catch (ValidationException ex) {
def errors = ["errors":[]]
ex.errors.allErrors.each{
if(it.arguments[0] == "fieldName" && it.code=="constrantViolated"){
errors.errors.push(["field":it.arguments[0],"message":"some custom message"])
}
}
//I am using 422 here because of post in http://stackoverflow.com/questions/7996569/can-we-create-custom-http-status-codes
render(status: 422, contentType: 'JSON', text: (errors as JSON))
}
}
मेरी एंबर नियंत्रक में
तब:
var myModel = self.get('store').createRecord('myModel ', myModelDataInJSON);
myModel .save().then(function() {
//if success
},
function (response) {
myModel .deleteRecord();
var errors = $.parseJSON(response.responseText);
for (var key in errors.errors) {
//do something
}
});
धन्यवाद। मुझे शुरुआत में प्रतिक्रिया प्राप्त करने के साथ समस्या हो रही थी। आतंक लेकिन बाद में मुझे पता चला कि उचित HTTP त्रुटि कोड के साथ प्रतिक्रिया पाठ कैसे भेजना है और इसके बजाय प्रतिक्रिया टेक्स्ट प्राप्त करें। –
इस तरह मैं इस पल के लिए भी करता हूं लेकिन मुझे यह पसंद नहीं है कि यह रिकॉर्ड दिखाएगा और सर्वर के जवाब देने के बाद इसे हटा देगा। क्या सर्वर के उत्तर को लगातार रिकॉर्ड प्रदर्शित करने का इंतजार करने का कोई तरीका है? – Bachet