2017-07-06 21 views
1

以下に示すように、検証されたメソッドに渡される配列パラメータがあります。 検証のために私はSimpleSchemaを使用しています。SimpleSchema:特定の配列を検証する方法

クライアント

const url = "/articles/bmphCpyHZLhTc74Zp" 
example.call({ item: url.split('/') }) 

サーバー

example = new ValidatedMethod({ 
    name : 'example', 
    validate: new SimpleSchema({ 
     item: { 
      type: [String] 
     } 
    }).validator(), 

    run({ item }) { 
     console.log(item) 
    } 
}) 

しかし、私は、もう少し具体的な検証したいと思います。したがって、アイテム配列には3つの要素が必要です。 最初は空、2番目はallowedValuesで設定された値を使用し、3番目のIDはID

+0

これをオブジェクトではなく配列として保存してもよろしいですか?配列の各要素が概念的に同じものである場合、実際には配列を使用する必要があります。各要素は相互に交換できます。概念的には、配列の3つの要素は実際には3つの異なるフィールドです。 url.split()配列からクライアント上にオブジェクトを作成し、それをコレクションに格納する方が理にかなっていますか?それはまた、バリデーションをもっと簡単にするでしょう。 – Hashcut

+0

@ハッシュカットありがとう。あなたは完全に正しいです。 – user3142695

答えて

0

です。このようなカスタムスキーマを使用して実装できます。 も正規表現を渡します。

AddressSchema = new SimpleSchema({ 
    street: { 
    type: String, 
    max: 100 
    }, 
    city: { 
    type: String, 
    max: 50 
    }, 
    state: { 
    type: String, 
    regEx: /^A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]$/ 
    }, 
    zip: { 
    type: String, 
    regEx: /^[0-9]{5}$/ 
    } 
}); 

CustomerSchema = new SimpleSchema({ 
    billingAddress: { 
    type: AddressSchema 
    }, 
    shippingAddresses: { 
    type: [AddressSchema], 
    minCount: 1 
    } 
}); 

このように入れることができます。

example = new ValidatedMethod({ 
    name : 'example', 
    validate: new SimpleSchema({ 
     item: { 
      type: [CustomType], 
      regEx: // your regex 
     } 
    }).validator(), 

    run({ item }) { 
     console.log(item) 
    } 
}) 
+0

私のコードにはどこに入れなければなりませんか? – user3142695

+0

あなたが妥当性をチェックしたいものを追加してくださいAddressSchemaと同様に、カスタムタイプを作成できます。 OK?あなたの構造が何であるか教えてください。あなたのためにそれを書いていきます。 – MehulJoshi

関連する問題