2017-07-18 11 views
-1

ノードでエクスプレスバリデーターを使用してフォームを検証しましたが、オブジェクトを通過するエラーが完全に返されました(これは私のものです):ネストされたオブジェクトは文字列です - オブジェクトとして必要です

{ email: 
    { param: 'email', 
    msg: 'Email address must be between 4-100 characters long, please try again.', 
    value: '' }, 
    name: 
    { param: 'name', 
    msg: 'Name must be between 3-20 characters long.', 
    value: '' }, 
    password: 
    { param: 'password', 
    msg: 'Password must include one lowercase character, one uppercase character, a number, and a special character.', 
    value: '' }, 
    passwordc: 
    { param: 'passwordc', 
    msg: 'Password must be between 8-50 characters long.', 
    value: '' } } 

これは「文字列」であり、残念ながらオブジェクトタイプではないという問題があります。私はこれを、オブジェクトを入れ子にしたオブジェクトに変換する必要があります。

これは有効なJSONではないため、JSON.parseを使用することはできません。

オブジェクトのこの文字列をオブジェクトに変更するにはどうすればよいですか?これはループして関連するエラーを表示できるようにするためのものです。

ありがとうございました。 P.S私はこれにこだわっています - あなたがこれに対する答えを知っているなら、多くのブラウニーは私からあなたに指しています。乾杯!

+0

あなたのJSONは有効ですが、なぜその場合はJSON.parseを使用できませんか? –

+1

JSONLintでこれを確認できますが、無効です。有効なJSONは一重引用符ではなく二重引用符を使用する必要があります。また、すべての鍵も二重引用符で囲む必要があります。私はJSON.parseを実行することができる唯一の方法は、あまりにも多くの正規表現を実行することです、そして、キー名が変わる可能性があるので、それは良い方法ではありません。私は本当にこれで困っている! – Notorious

+1

私は混乱しています、これは有効なJavaScriptオブジェクトであり、文字列ではありません。 – str

答えて

0

JSON表記に問題があると思います。取得している現在の文字列は、必要な形式ではありません。一重引用符ではなく文字列の二重引用符をプロパティ名と二重引用符で囲む必要があります。それはあなたのJSON.parseを動作させるはずです。

根本的な原因は、このJSONをどこから取得しているかに焦点を当てて、適切なJSON形式を発行していることを確認する必要があります。

また、コードでこのJSONを作成している場合は、改行やパディングを追加してサイズを縮小したくない場合があります。 http://www.jsoneditoronline.org/(または他のもの)をいつでもフレンドリーな形式で見ることができます。

希望すると便利です。

1

これは本当に奇妙だったし、私はこれの底に来た。

基本的には、express-validatorが新しいアップデートでオブジェクトを返す方法にバグや問題があるはずです。

私はオブジェクトであるオブジェクトを返す、償却された関数validationErrors()を使用しました。 https://github.com/ctavan/express-validator#installation

これは私には型の文字列(奇妙な私が知っている)だったオブジェクトを返していた。私は開発者にこれがバグか、おそらく私のセットアップ(ノード、表現、反応)のためにencaseを知らせます。

お返事ありがとうございます。

関連する問題