나는 컨트롤러 레이어를 가능한 한 가볍게 유지하여 서비스 레이어를 구현하려고합니다. 이제 나는 유효성 검사와 위생 처리에 갇혀있다. 유효성 검사가 서비스 계층에서 수행되어야한다는 것을 알고 있지만 위생 처리는 무엇입니까? 유효성 검사 오류가있을 때 입력 데이터를 다시 렌더링하고 싶습니다.입력 유효성 검사, 위생 및 서비스 계층
//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');
}
거기에는 두 가지 옵션이 있습니다.
- 서비스 호출 함수 '등록'을 원시 POST 데이터로 지정하고 유효성을 검사 한 다음 유효성 검사 오류 만 되돌립니다. 유효성 검사 오류가있는 경우보기를 렌더링하기 전에 제어기에서 유효성을 검사하십시오.
- 첫 번째 것과 동일하지만 유효성 검사 오류 및 삭제 된 필드를 다시 푸시합니다.
귀하의 요구에 가장 적합한이 답변에 대한 올바른 대답은 아닙니까? – WiredPrairie