2013-03-21 6 views
1

Node.js를 처음 사용하고 node.js.js의 유효성 검사 메시지를 사용자 정의 할 때 문제가 발생했습니다. CRUD 작업을 사용하여 Compound JS로 간단한 응용 프로그램을 만들었습니다. 내 응용 프로그램에서 "id"라는 필드가 있습니다. "id"필드는 정수 값만 허용합니다. 그런 다음 model/user.js에서 다음 코드를 사용하여 필드의 유효성을 검사합니다.node.js에서 유효성 검사 메시지 사용자 정의

module.exports = function (compound, User) { 
var num = /^\s*\d+\s*$/; 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
}; 

위의 코드를 사용하면 정상적으로 작동합니다. 하지만 필드가 비어 있는지 확인하고 싶습니다. 그런 다음 코드를 조금 변경합니다. 수정 된 코드는 다음과 같이이다 :

module.exports = function (compound, User) { 
    var num = /^\s*\d+\s*$/; 
    User.validatesFormatOf('id', {with: num, message: {blank: "can't be blank", with: "is not a number"}}); 
    }; 

다음 필드이 "ID는 비워 둘 수 없습니다"로 표시됩니다 비어있는 경우 유효성 검사 메시지. 그러나 숫자가 아닌 id 필드에 값을 입력하면 유효성 검사 오류 메시지는 "Id [object Object]"가됩니다. 나는 with 키워드가 지원되지 않는다고 생각합니다. 여기에 "공백"또는 "분"과 같은 다른 키워드를 사용하면 "ID가 숫자가 아닙니다"라는 유효성 확인 메시지를 얻을 수 있습니다.

나는 이것에 대한 해결책이 때문에의 user.js의 수정 된 버전이 같다 발견

module.exports = function (compound, User) { 
    var num = /^\s*\d+\s*$/; 
    User.validatesPresenceOf('id', {message: "can't be blank"}); 
    User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
    }; 

위의 코드의 문제는 기본, 즉 동시에 두 검증 메시지를 표시한다는 것입니다 사용자 정의 빈 메시지가 동시에 표시됩니다. 필자의 요구 사항은 한 번에 한 필드에 대해 하나의 유효성 검사 메시지 만 표시하는 것입니다. 이것이 가능한가?

답변

1

JugglingDB (CompoundJS에서 사용하는 ORM)의 버그처럼 보입니다. 다른 User.validatesFormat를 추가하면 4 오류가 발생합니다

invalid { id: [ 'can\'t be blank', 'is blank', 'is blank' ] } 

:

var juggling = require('jugglingdb'); 
var Schema = juggling.Schema; 

var schema = new Schema('memory'); 
var User = schema.define('User'); 
var num = /^\s*\d+\s*$/; 

User.validatesPresenceOf('id', {message: "can't be blank"}); 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 
User.validatesFormatOf('id', {with: num, message:"is not a number"}); 

var user = new User({ id : '' }); 

user.isValid(function(valid) { 
    if (! valid) 
    { 
    console.log('invalid', user.errors); 
    } 
    else 
    { 
    console.log('valid'); 
    } 
}); 

이 실제로 3 오류가 발생합니다 :

는 다음과 같은 코드를 생각해 보자. JugglingDB의 유효성 검사 코드 어딘가에 문제가있는 것처럼 보입니다. 버그 보고서를 게시 할 것입니다.

지금은 아마도 (user.errors[0]) 발생하는 첫 번째 오류 만 사용할 수 있습니다. EDIT : 그 모습으로 보면, JugglingDB는 모든 유효성 검사를 실행하고 실패한 모든 검사에 대해 오류를 생성하기 때문에 작업했을 때해야 할 일입니다.

+0

[여기 버그 리포트] (https://github.com/1602/jugglingdb/issues/230) – robertklep

+0

[개발자의 답변] (https://github.com/1602/jugglingdb/issues/230) # issuecomment-15223812). 다른 말로하면,'validatesFormatOf' * 또한 * is blank 체크를 수행하고 체크가 생성하는 메세지를 오버라이드 할 수 없다. – robertklep

관련 문제