2017-12-20 11 views
0

私はモデル内のコンテンツの長さを確認するための検証関数を持っています。NodeJS検証関数にいくつかのパラメータを渡す

let contentLengthchecker = (content) => { 
    if(!content){ 
     return false; 
    }else{ 
     if(content.length < 5 || content.length > 100){ 
      return false; 
     }else{ 
      return true; 
     } 
    } 
}; 

だから、私はこのようなモデルスキーマにバリデータフィールドとしてこれを置く...

const titleValidators = [ 
    {validator: contentLengthchecker, message: 'Title length must be between 6 to 30 characters'} 
]; 

とモデル上のバリデータフィールドにその配列を置きます。

const adSchema = new Schema({ 
    title: {type: String, required: true, validate: titleValidators}, 
    description: {type: String, required: true, validate: descriptionValidators} 
}); 

だから、今、私はこの機能を少し再利用可能なを作りたいです。だから、私は今、私はそれにはminLengthとmaxLenghtパラメータを渡すのに苦労しています、この

let contentLengthchecker = (content, minLength, maxLength) => { 
    if(!content){ 
     return false; 
    }else{ 
     if(content.length < minLength || content.length > maxLength){ 
      return false; 
     }else{ 
      return true; 
     } 
    } 
}; 

のようにそれを書いしかしです。私はモデルスキーマにそれらをどこに置くべきか分かりません。

したがって、追加のパラメータはどこに配置しますか?

答えて

0
const titleValidators = [{ 
    validator: contentLengthchecker, 
    message: 'Title length must be between 6 to 30 characters', 
    minLength: 6, 
    maxLength: 30 
}]; 


let contentLengthchecker = (content) => { 
if(!content){ 
    return false; 
}else{ 
    if(!this.minLength || !this.maxLength){ 
     throw 'minLength or maxLength is not specified'; 
    } 
    if(content.length < this.minLength || content.length > this.maxLength){ 
     return false; 
    }else{ 
     return true; 
    } 
} 

これはうまくいくと思います。

+0

ありがとうございます、あなたの答えはそれを行う方法を提供します。しかし、私が探しているのは、より多くのパラメータを関数に渡すことです。:) – TharinduLucky

関連する問題