2017-10-01 18 views
0

以下のコードでは、Webフォームから10桁の数字が渡された場合にのみ、二次電話番号を更新したい場合は、他の電話番号を挿入操作中に使用します。mongodbの更新中に条件を追加するには

以下のコードを修正して条件付きデータベース更新を実現するのに役立つものがありますか?

hotelModel.findOneAndUpdate({ "name": req.body['hotelName'], "contact.postalCode": parseInt(req.body['postalCode']) }, 
     { 
     $set: { 

      "contact.primaryContactNumber" : parseInt(req.body['primaryContactNumber']), 
      if (req.body['secondaryContactNumber'].toString().trim().length == 10) { 
        "hotelSchema.contact.secondaryContactNumber: : parseInt(req.body['secondaryContactNumber']) 
      }else{ 
       "contact.primaryContactNumber" : //How to add existing Secondary phone number? 
      }   

     } 
    }, { new: true }, 
    function (err, doc) {} 
+0

私はよく分かりません。ユーザーが有効な番号を入力しなかった場合、何をしたいですか? 「挿入操作中に2番目の電話番号に既に挿入されている電話番号を使用したいのですが、「contact.secondaryContactNumber」のように聞こえます。何も変更する必要はありません。 –

+0

私の質問をシンプルにしましょう.req.body ['secondaryContactNumber']がウェブuiからヌルとして渡されたときにsecondaryContactNumberの更新をスキップしますか?GUIのsecondaryContactNumberはオプションのフィールドです。私は更新ロジックを書く必要があります。そうすれば、ユーザが二次電話番号をGUIに提供していれば、二次電話番号の更新をスキップするだけです。 –

答えて

0

私が正しく理解していれば、ユーザーがそうでなければ、contact.secondaryContactNumberは変わらないようにしたい、有効な電話番号を提供している場合contact.secondaryContactNumberを更新したいです。その場合は、else句を削除してください。あなたが何かをするよう明示的に指示する必要はありません。なぜなら、デフォルトでは何も行いません。それはあなたが望むものなのです。

hotelModel.findOneAndUpdate({ "name": req.body['hotelName'], "contact.postalCode": parseInt(req.body['postalCode']) }, 
     { 
     $set: { 

      "contact.primaryContactNumber" : parseInt(req.body['primaryContactNumber']), 
      if (req.body['secondaryContactNumber'].toString().trim().length == 10) { 
        "hotelSchema.contact.secondaryContactNumber: : parseInt(req.body['secondaryContactNumber']) 
      }  
     } 
    }, { new: true }, 
    function (err, doc) {} 
+0

if(req。 body ['secondaryContactNumber']。toString()。trim()。length == 10){私は構文エラーを起こしています。 –

+0

全体のエラーは何ですか? –

関連する問題