2016-09-10 3 views
0

私のアプリではmongooseを使ってmlabに接続してデータを投稿しています。投稿をテストするために郵便配達員を使用すると、データをデータベースで更新しています。コンソールはこのエラーをスローします。マングーススローエラー - これを修正するには?

events.js:141 
     throw er; // Unhandled 'error' event 
    ^

TypeError: Cannot read property 'code' of null 
    at C:\Tutorials\try\NodePractical\MEAN-Family\app\routes\api.js:42:13 
    at C:\Tutorials\try\NodePractical\MEAN-Family\node_modules\mongoose\lib\model.js:3336:16 
    at C:\Tutorials\try\NodePractical\MEAN-Family\node_modules\mongoose\lib\document.js:1927:18 
    at nextTickCallbackWith0Args (node.js:420:9) 
    at process._tickCallback (node.js:349:13) 

このエラーはまったく理解できません。これを修正するには?そして、私のコードで何が間違っていますか?ここでは参考のため

は、私が使用しています私の post APIです:

.post(function(req, res){ 

       var family = new Family(); 

       family.username = req.body.username, 
       family.password = req.body.password, 
       family.familyLeader = req.body.familyLeader, 
       family.husband = req.body.husband, 
       family.wife = req.body.wife, 
       family.kids = req.body.kids; 

       family.save(function(err) { 

        if (err.code == 11000) { 
         return res.json({ success: false, message: 'A user with that username already exists. '}); 
        } 
        else { 
         res.send(err); 
        } 

        res.json({ message: 'Family created!' }); 

       }); 



      }) 

答えて

2

すべてのノードのコールバックは、この署名callback(error, response)を持っているので、

これは、エラーが発生した場合、最初のパラメータが含まれていることを意味しますエラーと2番目はnullになります。しかし、エラーが発生しない場合は、最初のパラメータがになります。この場合、null変数のプロパティ.codeにアクセスしようとしています。これを防止するために

エラーがnullでない場合には、最初にこれを行うことにより、確認することができます:

family.save(function(err, newFamily) { 

    if (err) { 
     if(err.code == 11000) { 
      return res.json({ success: false, message: 'A user with that username already exists. '}); 
     } 
     else { 
      return res.send(err); 
     } 
    } 

    res.json({ message: 'Family created!', newFamily: newFamily }); 

}); 

ご注意を変更する:

  • 最初の行 - 私は2番目のパラメータが含まれて保存ファミリを含む
  • 2行目 - 最初の条件チェックがでない場合
  • 最後の行 - 私はを含めました応答時にはが必要です。
+0

コールバック関数でこれを書くはい、それは働いています。しかし、私は新しい家族の詳細を持つ '成功'メッセージ( '家族作成')を得ていません。 (dbは新しいデータを作成します) – user2024080

+0

@ JohnnyHKは正しかったです。今更新されました。エラーチェックを修正しました。今これは機能するかもしれません。 – daymannovaes

0

   if (err && err.code == 11000) { 
        return res.json({ success: false, message: 'A user with that username already exists. '}); 
       } 
       else if (err){ 
        res.send(err); 
       }else{ 

       res.json({ message: 'Family created!' });} 
関連する問題