Input-Validierung, Bereinigung und service-layer

Ich versuche, meine controller-Aktionen so leicht wie möglich, so bin ich der Implementierung von service-Schicht. Jetzt habe ich stucked mit Validierung und-Bereinigung. Ich weiß, dass die Validierung sollte durchgeführt werden in der service-Schicht, aber was ist Desinfektion? Ich möchte zu re-Rendern, die mit den input-Daten, wenn es Fehler bei der Validierung.

//userService.js function
function register(data, callback) {
    if (!data) {
        return callback(new Error('Here some error...'));
    }

    /* Sanitize and validate the data */

    /* Method #1 */
    //If not valid then call back with validationErrors
    if (notValid) {
        return callback({
            validationErrors: {
                'username': 'Username is already in use.',
                'email': 'Invalid characters.',
            }
        });
    }

    /* Method #2 */
    if (notValid) {
        return callback({
            fields: {
                //We put here a sanitized fields

            },
            validationErrors: {
                'username': 'Username is already in use.',
                'email': 'Invalid characters.',
            }
        });
    }

};


//userController.js function
//GET/POST: /register
function registerAction(request, response, next) {
    if (request.method === 'POST') {
        var registerData = {
            username: request.body['username'],
            password: request.body['password'],
            email: request.body['email'],
            firstName: request.body['firstName'],
            lastName: request.body['lastName'],
        };

        register(registerData, function(error, someDataIfSucceed) {
            if (error) {
                //Re-post the data so the user wont have to fill the form again

                //Sanitize registerData variable here.

                return response.render('register', {
                    error: error,
                    validationErrors: error.validationErrors
                });
            };

            //User registered succesfully.
            return response.render('registerSuccess');
        });

        return;
    }

    return response.render('register');
}

Ich sehe gibt es 2 Optionen.

  1. Rufen Sie die service-Funktion 'registrieren' mit raw POST-Daten, bereinigen und validieren Sie ihn dann nach hinten schieben nur Fehler bei der Validierung. Wenn die Validierung Fehler dann bereinigen Sie im controller vor dem Rendern der Ansicht.
  2. Gleiche wie die erste, aber wir push-back-Validierung Fehler und gereinigte Felder an.
  • Gibt es nicht eine richtige Antwort auf das, was am besten funktioniert für Ihre Bedürfnisse?
InformationsquelleAutor RlyDontKnow | 2013-11-24
Schreibe einen Kommentar