2017-09-24 9 views
0

私のモデルのフィールドの1つは、更新API呼び出し中にマングーススキーマ検証をスキップする方法

providerID:{type:Number、required:true、unique:true}と定義されています。

providerIdはプロバイダの詳細が最初に挿入されたときに挿入される一意の番号です。名前のアドレスなどのようなプロバイダの詳細を更新する必要があるインスタンスがあります。更新api呼び出し中に、mongooseは、私はそれをまったく変更しません。

API呼び出し中に「providerID」の検証をスキップ/無視する方法はありますか? 理想的には、私はmongooseがinsert api呼び出し中に検証エラーをスローし、update API呼び出し中に検証をスキップすることを期待しています。

+0

あなたは更新時に 'providerID'を変更していませんか?必要なフィールドまたは固有のフィールドの一部をそのまま維持して既存のドキュメントを更新する場合、問題はありません。挿入と更新のスキーマとコードを投稿してください。 – Mikey

+0

モデルとコントローラのコードはhttps://stackoverflow.com/questions/46355932/mongoose-schema-validation-error-while-updating-document?noredirect=1#comment79676078_46355932 –

答えて

0

ここにあなたのcodeを見て私の推測です。

transportModel.findOneAndUpdate(conditions, update, { returnOriginal: false, upsert: true }, callback); 

あなたfindOneAndUpdate()は、それが存在しない場合、すなわちがオブジェクトを作成するupsert: trueオプションを使用しています。オブジェクトが存在しない可能性はありますか?その場合は、providerIDを入力せずに、指定したデータを持つ新しいオブジェクトを作成しようとすると、エラーが発生します。

findOne()を使用して同じ条件でクイックテストを実行します。

transportModel.findOne(conditions, function (err, model) { 
    if (!model) 
     console.log('something is wrong with your data or conditions'); 
}); 
+0

にあります。upsertを削除しました:true findOneAndUpdate query、運がない –

関連する問題