>

저는 폼 클라이언트에서 제공 한 정보를 사용하여 프런트 엔드에 입력하는 정보를 사용하여 SQL 데이터베이스에 INSERT 쿼리를 수행하는 간단한 API를 개발 중입니다. 쿼리 오류와 관련된 오류 메시지를 작성할 때 선호되는 방법이 있는지 궁금합니다.

구체적인 예제를 사용하여 속성 A, B 및 C를 가진 사용자가 작성해야하는 양식이 있습니다. SQL 데이터베이스에서는 모두 "NOT NULL"제한 조건으로 적용됩니다. 따라서 빈 양식을 제출하면 다음과 같은 오류 개체가 반환됩니다.

{
...
errors:
  [ ValidateErrorItem {
      message: "model.a cannot be null"
      type: "..."
      path: "..." 
      value: "..."
      .. },
    ValidateErrorItem {
      message: "model.b cannot be null"
      type: "..."
      path: "..." 
      value: "..."
      .. },
    ValidateErrorItem {
      message: "model.c cannot be null"
      type: "..."
      path: "..." 
      value: "..."
      .. },
  ]
}

일반적으로 사용자에게 표시 할 오류 메시지를 구성하는 방법은 무엇입니까?

참고 :이 시나리오는 프런트 엔드 유효성 검사를 사용하여 방지 할 수 있지만 null이 아닌 유효성 검사 이외의 다른 문제는 잘못 될 수 있으므로 오류가 발생했을 때의 단순한 예일뿐입니다. 실제로해라.


  • 답변 # 1

    이러한 종류의 검증은 각 API 요청에 대해 수행되어야합니다. Joi를 선호합니다.

    Joi는 스키마가 예상 한 것과 일치하지 않을 때마다 오류를 발생시킵니다. 예를 들어

    const schema = Joi.object().keys({
      modelA: Joi.string().required(),
      modelB: Joi.string().required(),
      modelC: Joi.string().required(),
    });
    const myObj = { modelA: 'modelA' };
    console.log(Joi.validate(myObj, schema));
    
    

    위 코드는 { ValidationError: child "modelB" fails because ["modelB" is required] 오류를 발생시킵니다

    이러한 고객 오류 메시지를 추가 할 수도 있습니다

    const schema = Joi.object().keys({
      modelA: Joi.string().required(),
      modelB: Joi.string().required().error(new Error('Was expecting a string')),
      modelC: Joi.string().required(),
    });
    const myObj = { modelA: 'modelA' };
    console.log(Joi.validate(myObj, schema));
    
    

    오류가 발생합니다

      Error: Was expecting a string
    
    

    이러한 메시지는 프런트 엔드로 구문 분석하여 표시 할 수 있습니다.

관련 자료

  • 이전 regex - 파이썬으로 사용자 입력의 목록에서 비슷한 항목을 일치 시키십니까?
  • 다음 wcf - TransactionScopeRequired = true 제거