programing

Vuevalidate 비동기 유효성 검사 결과가 루프로 전환됨

firstcheck 2022. 9. 5. 23:56
반응형

Vuevalidate 비동기 유효성 검사 결과가 루프로 전환됨

Vue Validate 사용 중

내 vuevlidate에는 다음 항목이 있습니다.

      validations: {
        user_form: {
            email: {required,email, isUnique(value) {
                    // standalone validator ideally should not assume a field is required
                    if (value === '') return true;
                    // simulate async call, fail for all logins with even length
                    return new Promise((resolve, reject) => {
                       this.$http.post("v1/user-management/users/email-registeredi",{email:value}).then((res)=>{
                            console.log("res is ", res);
                            resolve(true);
                        },(err)=>{
                            reject(false)
                        })
                    })
                }},
            role: {required},
            password: {required}
        }
    },

이 경우 특히 오류가 발생했을 때 http 요청의 무한 루프가 생성됩니다.

어디가 잘못됐지?

vue validate가 거부 약속을 잘 처리하지 못하고 무한 루프를 생성하는 경우.
시도해 보세요.async awaitVue validate의 독특한 특징에 대해서는 try and catch returning을 사용합니다.false에러로
이런 느낌이에요.

validations: {
 user_form: {
  email: {
    required,
    email,
    async isUnique (value) {
        if (value === '') return true
        try{
          const response = await this.$http.post("v1/user-management/users/email-registeredi",{email:value})
          return true;
        }
        catch(e){
          return false;
        }   
      }
   }
 }

vue 리소스는 이미 "새로운 약속"을 사용하기 때문에 "새로운 약속"을 사용할 필요가 없습니다.이것을 시험해 보세요.

validations: {
    user_form: {
        email: {required,email, isUnique(value) {
                // standalone validator ideally should not assume a field is required
                if (value === '') return true;
                // simulate async call, fail for all logins with even length

               return this.$http.post("v1/user-management/users/email-registeredi",{email:value}).then((res)=>{
                    console.log("res is ", res);
                    return true;
                },(err)=>{
                    return false;
                });
            }},
        role: {required},
        password: {required}
    }
},

언급URL : https://stackoverflow.com/questions/51919375/vuevalidate-async-validation-results-to-a-loop

반응형