ist die Behandlung von benutzerdefinierten serverseitigen Fehlern in Glutdaten beim Speichern des Modells möglich

Gibt es eine geeignete Möglichkeit, benutzerdefinierte Fehler beim Speichern eines Modells zu behandeln? Nehmen wir zum Beispiel an, ich habe ein Modell mit nur zwei Eigenschaften "name" und "value". Und wenn ich mache:

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

});

Eine Möglichkeit, dies zu umgehen, besteht darin, einen zusätzlichen Ajax-Aufruf durchzuführen, um zu prüfen, ob der Name eindeutig ist, und dann den Speichervorgang durchzuführen. Ich frage mich nur, was hier der beste / eleganteste Ansatz ist.

Danke, Dee

EDIT: Ich dachte, es könnte ein bisschen helfen, mehr Kontext auf der Serverseite der Dinge in Groovy zu geben. Hier ist es also:

In meinem Controller habe ich:

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))
    }

}

Dann in meinem Glut-Controller:

    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
        }
    });

Antworten auf die Frage(3)

Ihre Antwort auf die Frage