2017-04-06 16 views
0

私はmongooseとNode.Jsを使用して私のWebサービスを公開しています。 すると、クライアントが私に無効なオブジェクトIDを送信今まで、私はエラーに処理方法CastError:ObjectIdへのキャストが値に失敗しました

message: 'Cast to ObjectId failed for value "333333707333371ssss" at path "_id" for model "student"', 

を取得しています、私は私が.findを使用して、どこでもキャッチを試みる扱うモデルの多くを持って、それが適切なソリューションですか? これをアプリケーション全体で処理するためのエレガントな方法は何ですか?そのオブジェクトIDは何にも対応していないので、ヌル応答を戻したいのですが...

このエラーを処理するにはどうすればいいですか?

答えて

0

有効なオブジェクトIDではないため、このObjectIdをキャストする際にMongooseが失敗します。 .findメソッドを呼び出す前に、mongooseバリデーターmongoose.Types.ObjectId.isValid(id)を使用してチェックする必要があります。これは、コントローラー内の妥当性検査をチェックするときに、ちょっと "ハッキー"です。それ以外の場合は、コールバックのエラーをキャッチしてそれに応じて応答することができます。

+0

すべてのコントローラでisValidを書きますか?私はそれが厳しいだろうと思う..任意の選択肢があります – Jocket

+0

あなたはfindメソッドでキャッチしてエラーする必要があります。すべてのコールバックにはエラーと応答があるため、コール後にエラーがあるかどうかを確認できます。 .find({}、function(error、data){})と同様に、 –

関連する問題